1
0
Markus-Rost 3 жил өмнө
parent
commit
66c459cfc3

+ 2 - 2
bot.js

@@ -1,11 +1,11 @@
 import './util/globals.js';
-import {readdir} from 'fs';
+import { readdir } from 'fs';
 import Discord from 'discord.js';
 import db from './util/database.js';
 import Lang from './util/i18n.js';
 import Wiki from './util/wiki.js';
 import newMessage from './util/newMessage.js';
-import {breakOnTimeoutPause, allowDelete} from './util/functions.js';
+import { breakOnTimeoutPause, allowDelete } from './util/functions.js';
 
 const client = new Discord.Client( {
 	makeCache: Discord.Options.cacheWithLimits( {

+ 3 - 3
cmds/eval.js

@@ -1,11 +1,11 @@
-import {inspect} from 'util';
+import { inspect } from 'util';
 import cheerio from 'cheerio';
 import Discord from 'discord.js';
-import {got} from '../util/functions.js';
+import { got } from '../util/functions.js';
 import newMessage from '../util/newMessage.js';
 import Wiki from '../util/wiki.js';
 import db from '../util/database.js';
-import {createRequire} from 'module';
+import { createRequire } from 'module';
 const require = createRequire(import.meta.url);
 const {limit: {verification: verificationLimit, rcgcdw: rcgcdwLimit}} = require('../util/default.json');
 

+ 3 - 3
cmds/get.js

@@ -1,7 +1,7 @@
-import {MessageEmbed, Util, ShardClientUtil, Permissions} from 'discord.js';
-import {escapeFormatting} from '../util/functions.js';
+import { MessageEmbed, Util, ShardClientUtil, Permissions } from 'discord.js';
+import { escapeFormatting } from '../util/functions.js';
 import db from '../util/database.js';
-import {createRequire} from 'module';
+import { createRequire } from 'module';
 const require = createRequire(import.meta.url);
 const {defaultSettings, defaultPermissions} = require('../util/default.json');
 const {shardIdForGuildId} = ShardClientUtil;

+ 2 - 2
cmds/help.js

@@ -1,6 +1,6 @@
-import {Util} from 'discord.js';
+import { Util } from 'discord.js';
 import help_server from '../functions/helpserver.js';
-import {createRequire} from 'module';
+import { createRequire } from 'module';
 const require = createRequire(import.meta.url);
 const {wikis: mcw} = require('./minecraft/commands.json');
 

+ 1 - 1
cmds/invite.js

@@ -1,4 +1,4 @@
-import {createRequire} from 'module';
+import { createRequire } from 'module';
 const require = createRequire(import.meta.url);
 const {defaultPermissions} = require('../util/default.json');
 

+ 2 - 2
cmds/minecraft/bug.js

@@ -1,5 +1,5 @@
-import {MessageEmbed} from 'discord.js';
-import {got, escapeFormatting, limitLength} from '../../util/functions.js';
+import { MessageEmbed } from 'discord.js';
+import { got, escapeFormatting, limitLength } from '../../util/functions.js';
 
 /**
  * Sends a Minecraft issue.

+ 3 - 3
cmds/minecraft/syntax.js

@@ -1,7 +1,7 @@
-import {Util} from 'discord.js';
-import {got} from '../../util/functions.js';
+import { Util } from 'discord.js';
+import { got } from '../../util/functions.js';
 import Wiki from '../../util/wiki.js';
-import {createRequire} from 'module';
+import { createRequire } from 'module';
 const require = createRequire(import.meta.url);
 const commands = require('./commands.json');
 

+ 2 - 2
cmds/patreon.js

@@ -1,6 +1,6 @@
-import {ShardClientUtil} from 'discord.js';
+import { ShardClientUtil } from 'discord.js';
 import db from '../util/database.js';
-import {createRequire} from 'module';
+import { createRequire } from 'module';
 const require = createRequire(import.meta.url);
 const {defaultPermissions, limit: {verification: verificationLimit, rcgcdw: rcgcdwLimit}} = require('../util/default.json');
 const {shardIdForGuildId} = ShardClientUtil;

+ 4 - 4
cmds/rcscript.js

@@ -1,12 +1,12 @@
-import {existsSync} from 'fs';
+import { existsSync } from 'fs';
 import cheerio from 'cheerio';
-import {Util, MessageActionRow, MessageButton, Permissions} from 'discord.js';
+import { Util, MessageActionRow, MessageButton, Permissions } from 'discord.js';
 import help_setup from '../functions/helpsetup.js';
-import {got} from '../util/functions.js';
+import { got } from '../util/functions.js';
 import Lang from '../util/i18n.js';
 import Wiki from '../util/wiki.js';
 import db from '../util/database.js';
-import {createRequire} from 'module';
+import { createRequire } from 'module';
 const require = createRequire(import.meta.url);
 const {limit: {rcgcdw: rcgcdwLimit}} = require('../util/default.json');
 const allLangs = Lang.allLangs(true);

+ 1 - 1
cmds/say.js

@@ -1,4 +1,4 @@
-import {Permissions} from 'discord.js';
+import { Permissions } from 'discord.js';
 
 /**
  * Processes the "say" command.

+ 3 - 3
cmds/settings.js

@@ -1,10 +1,10 @@
 import cheerio from 'cheerio';
-import {MessageEmbed, Util, MessageActionRow, MessageButton} from 'discord.js';
-import {got} from '../util/functions.js';
+import { MessageEmbed, Util, MessageActionRow, MessageButton } from 'discord.js';
+import { got } from '../util/functions.js';
 import Lang from '../util/i18n.js';
 import Wiki from '../util/wiki.js';
 import db from '../util/database.js';
-import {createRequire} from 'module';
+import { createRequire } from 'module';
 const require = createRequire(import.meta.url);
 const {defaultSettings} = require('../util/default.json');
 const allLangs = Lang.allLangs();

+ 2 - 2
cmds/test.js

@@ -1,6 +1,6 @@
-import {MessageEmbed} from 'discord.js';
+import { MessageEmbed } from 'discord.js';
 import help_setup from '../functions/helpsetup.js';
-import {got} from '../util/functions.js';
+import { got } from '../util/functions.js';
 import logging from '../util/logging.js';
 
 const wsStatus = [

+ 3 - 3
cmds/verification.js

@@ -1,8 +1,8 @@
-import {Util, MessageActionRow, MessageButton, Permissions} from 'discord.js';
+import { Util, MessageActionRow, MessageButton, Permissions } from 'discord.js';
 import help_setup from '../functions/helpsetup.js';
 import db from '../util/database.js';
-import {got} from '../util/functions.js';
-import {createRequire} from 'module';
+import { got } from '../util/functions.js';
+import { createRequire } from 'module';
 const require = createRequire(import.meta.url);
 const {limit: {verification: verificationLimit}} = require('../util/default.json');
 

+ 3 - 3
cmds/verify.js

@@ -1,8 +1,8 @@
-import {randomBytes} from 'crypto';
-import {MessageEmbed, MessageActionRow, MessageButton, Permissions} from 'discord.js';
+import { randomBytes } from 'crypto';
+import { MessageEmbed, MessageActionRow, MessageButton, Permissions } from 'discord.js';
 import db from '../util/database.js';
 import verify from '../functions/verify.js';
-import {got, oauthVerify, allowDelete, escapeFormatting} from '../util/functions.js';
+import { got, oauthVerify, allowDelete, escapeFormatting } from '../util/functions.js';
 
 /**
  * Processes the "verify" command.

+ 3 - 3
cmds/wiki/diff.js

@@ -1,8 +1,8 @@
-import {MessageEmbed} from 'discord.js';
+import { MessageEmbed } from 'discord.js';
 import logging from '../../util/logging.js';
-import {got, htmlToPlain, htmlToDiscord, escapeFormatting} from '../../util/functions.js';
+import { got, htmlToPlain, htmlToDiscord, escapeFormatting } from '../../util/functions.js';
 import diffParser from '../../util/edit_diff.js';
-import {createRequire} from 'module';
+import { createRequire } from 'module';
 const require = createRequire(import.meta.url);
 const {timeoptions} = require('../../util/default.json');
 

+ 3 - 3
cmds/wiki/discussion.js

@@ -1,7 +1,7 @@
 import htmlparser from 'htmlparser2';
-import {MessageEmbed, Util} from 'discord.js';
-import {got, htmlToDiscord, escapeFormatting} from '../../util/functions.js';
-import {createRequire} from 'module';
+import { MessageEmbed, Util } from 'discord.js';
+import { got, htmlToDiscord, escapeFormatting } from '../../util/functions.js';
+import { createRequire } from 'module';
 const require = createRequire(import.meta.url);
 const {limit: {discussion: discussionLimit}} = require('../../util/default.json');
 

+ 4 - 4
cmds/wiki/general.js

@@ -1,13 +1,13 @@
-import {readdir} from 'fs';
-import {MessageEmbed} from 'discord.js';
+import { readdir } from 'fs';
+import { MessageEmbed } from 'discord.js';
 import parse_page from '../../functions/parse_page.js';
 import phabricator from '../../functions/phabricator.js';
 import logging from '../../util/logging.js';
-import {got, htmlToDiscord, escapeFormatting, partialURIdecode, breakOnTimeoutPause} from '../../util/functions.js';
+import { got, htmlToDiscord, escapeFormatting, partialURIdecode, breakOnTimeoutPause } from '../../util/functions.js';
 import extract_desc from '../../util/extract_desc.js';
 import Wiki from '../../util/wiki.js';
 import * as fn from './functions.js'
-import {createRequire} from 'module';
+import { createRequire } from 'module';
 const require = createRequire(import.meta.url);
 const {limit: {interwiki: interwikiLimit}, wikiProjects} = require('../../util/default.json');
 const {wikis: mcw} = require('../minecraft/commands.json');

+ 3 - 3
cmds/wiki/overview.js

@@ -1,7 +1,7 @@
-import {MessageEmbed} from 'discord.js';
+import { MessageEmbed } from 'discord.js';
 import logging from '../../util/logging.js';
-import {got, toFormatting, toPlaintext, escapeFormatting} from '../../util/functions.js';
-import {createRequire} from 'module';
+import { got, toFormatting, toPlaintext, escapeFormatting } from '../../util/functions.js';
+import { createRequire } from 'module';
 const require = createRequire(import.meta.url);
 const {timeoptions} = require('../../util/default.json');
 

+ 2 - 2
cmds/wiki/random.js

@@ -1,7 +1,7 @@
-import {MessageEmbed} from 'discord.js';
+import { MessageEmbed } from 'discord.js';
 import parse_page from '../../functions/parse_page.js';
 import logging from '../../util/logging.js';
-import {got, toMarkdown, htmlToDiscord, escapeFormatting} from '../../util/functions.js';
+import { got, toMarkdown, htmlToDiscord, escapeFormatting } from '../../util/functions.js';
 import extract_desc from '../../util/extract_desc.js';
 
 /**

+ 3 - 3
cmds/wiki/search.js

@@ -1,6 +1,6 @@
-import {MessageEmbed, Util} from 'discord.js';
-import {got, escapeFormatting} from '../../util/functions.js';
-import {createRequire} from 'module';
+import { MessageEmbed, Util } from 'discord.js';
+import { got, escapeFormatting } from '../../util/functions.js';
+import { createRequire } from 'module';
 const require = createRequire(import.meta.url);
 const {limit: {search: searchLimit}} = require('../../util/default.json');
 

+ 3 - 3
cmds/wiki/special_page.js

@@ -1,7 +1,7 @@
-import {MessageEmbed, Util} from 'discord.js';
+import { MessageEmbed, Util } from 'discord.js';
 import logging from '../../util/logging.js';
-import {got, toMarkdown, escapeFormatting} from '../../util/functions.js';
-import {createRequire} from 'module';
+import { got, toMarkdown, escapeFormatting } from '../../util/functions.js';
+import { createRequire } from 'module';
 const require = createRequire(import.meta.url);
 const {timeoptions} = require('../../util/default.json');
 

+ 3 - 3
cmds/wiki/user.js

@@ -1,11 +1,11 @@
-import {MessageEmbed} from 'discord.js';
+import { MessageEmbed } from 'discord.js';
 import datetimeDifference from 'datetime-difference';
 import global_block from '../../functions/global_block.js';
 import parse_page from '../../functions/parse_page.js';
 import logging from '../../util/logging.js';
 import extract_desc from '../../util/extract_desc.js';
-import {got, toMarkdown, toPlaintext, htmlToDiscord, escapeFormatting} from '../../util/functions.js';
-import {createRequire} from 'module';
+import { got, toMarkdown, toPlaintext, htmlToDiscord, escapeFormatting } from '../../util/functions.js';
+import { createRequire } from 'module';
 const require = createRequire(import.meta.url);
 const {timeoptions, usergroups} = require('../../util/default.json');
 

+ 5 - 5
dashboard/functions.js

@@ -1,8 +1,8 @@
-import {get as rcscript_get, post as rcscript_post} from './rcscript.js';
-import {get as settings_get, post as settings_post} from './settings.js';
-import {get as slash_get, post as slash_post} from './slash.js';
-import {get as user_get, post as user_post} from './user.js';
-import {get as verification_get, post as verification_post} from './verification.js';
+import { get as rcscript_get, post as rcscript_post } from './rcscript.js';
+import { get as settings_get, post as settings_post } from './settings.js';
+import { get as slash_get, post as slash_post } from './slash.js';
+import { get as user_get, post as user_post } from './user.js';
+import { get as verification_get, post as verification_post } from './verification.js';
 
 export const forms = {
 	rcscript: rcscript_get,

+ 4 - 4
dashboard/guilds.js

@@ -1,9 +1,9 @@
-import {readFileSync} from 'fs';
+import { readFileSync } from 'fs';
 import cheerio from 'cheerio';
-import {forms} from './functions.js';
+import { forms } from './functions.js';
 import Lang from './i18n.js';
-import {oauth, enabledOAuth2, settingsData, addWidgets, createNotice} from './util.js';
-import {createRequire} from 'module';
+import { oauth, enabledOAuth2, settingsData, addWidgets, createNotice } from './util.js';
+import { createRequire } from 'module';
 const require = createRequire(import.meta.url);
 const {defaultPermissions} = require('../util/default.json');
 const allLangs = Lang.allLangs().names;

+ 2 - 2
dashboard/i18n.js

@@ -1,5 +1,5 @@
-import {escapeText} from './util.js';
-import {createRequire} from 'module';
+import { escapeText } from './util.js';
+import { createRequire } from 'module';
 const require = createRequire(import.meta.url);
 const {defaultSettings} = require('../util/default.json');
 const i18n = require('./i18n/allLangs.json');

+ 3 - 3
dashboard/index.js

@@ -1,10 +1,10 @@
 import http from 'http';
 import fs from 'fs';
-import {extname} from 'path';
+import { extname } from 'path';
 import * as pages from './oauth.js';
 import dashboard from './guilds.js';
-import {posts} from './functions.js';
-import {db, sessionData, settingsData} from './util.js';
+import { posts } from './functions.js';
+import { db, sessionData, settingsData } from './util.js';
 import Lang from './i18n.js';
 const allLangs = Lang.allLangs();
 

+ 5 - 5
dashboard/oauth.js

@@ -1,10 +1,10 @@
-import {readFileSync} from 'fs';
-import {randomBytes} from 'crypto';
+import { readFileSync } from 'fs';
+import { randomBytes } from 'crypto';
 import cheerio from 'cheerio';
 import Wiki from '../util/wiki.js';
-import {allLangs} from './i18n.js';
-import {got, db, oauth, enabledOAuth2, sessionData, settingsData, oauthVerify, sendMsg, addWidgets, createNotice, hasPerm} from './util.js';
-import {createRequire} from 'module';
+import { allLangs } from './i18n.js';
+import { got, db, oauth, enabledOAuth2, sessionData, settingsData, oauthVerify, sendMsg, addWidgets, createNotice, hasPerm } from './util.js';
+import { createRequire } from 'module';
 const require = createRequire(import.meta.url);
 const {defaultPermissions} = require('../util/default.json');
 const allLangNames = allLangs().names;

+ 2 - 2
dashboard/rcscript.js

@@ -1,8 +1,8 @@
 import cheerio from 'cheerio';
 import Lang from '../util/i18n.js';
 import Wiki from '../util/wiki.js';
-import {got, db, sendMsg, createNotice, hasPerm} from './util.js';
-import {createRequire} from 'module';
+import { got, db, sendMsg, createNotice, hasPerm } from './util.js';
+import { createRequire } from 'module';
 const require = createRequire(import.meta.url);
 const {defaultSettings, limit: {rcgcdw: rcgcdwLimit}} = require('../util/default.json');
 const allLangs = Lang.allLangs(true).names;

+ 2 - 2
dashboard/settings.js

@@ -1,8 +1,8 @@
 import cheerio from 'cheerio';
 import Lang from '../util/i18n.js';
 import Wiki from '../util/wiki.js';
-import {got, db, sendMsg, createNotice, hasPerm} from './util.js';
-import {createRequire} from 'module';
+import { got, db, sendMsg, createNotice, hasPerm } from './util.js';
+import { createRequire } from 'module';
 const require = createRequire(import.meta.url);
 const {defaultSettings} = require('../util/default.json');
 const allLangs = Lang.allLangs().names;

+ 1 - 1
dashboard/slash.js

@@ -1,5 +1,5 @@
 import Lang from '../util/i18n.js';
-import {got, db, slashCommands, sendMsg, createNotice, hasPerm} from './util.js';
+import { got, db, slashCommands, sendMsg, createNotice, hasPerm } from './util.js';
 
 const fieldset = {
 	role: '<label for="wb-settings-addrole">Role:</label>'

+ 1 - 1
dashboard/user.js

@@ -1,4 +1,4 @@
-import {db, enabledOAuth2} from './util.js';
+import { db, enabledOAuth2 } from './util.js';
 
 /**
  * Let a user change settings

+ 2 - 2
dashboard/util.js

@@ -1,8 +1,8 @@
 import gotDefault from 'got';
 import pg from 'pg';
 import DiscordOauth2 from 'discord-oauth2';
-import {oauthSites} from '../util/wiki.js';
-import {createRequire} from 'module';
+import { oauthSites } from '../util/wiki.js';
+import { createRequire } from 'module';
 const require = createRequire(import.meta.url);
 const slashCommands = require('../interactions/commands.json');
 

+ 2 - 2
dashboard/verification.js

@@ -1,6 +1,6 @@
 import Lang from '../util/i18n.js';
-import {got, db, slashCommands, sendMsg, createNotice, escapeText, hasPerm} from './util.js';
-import {createRequire} from 'module';
+import { got, db, slashCommands, sendMsg, createNotice, escapeText, hasPerm } from './util.js';
+import { createRequire } from 'module';
 const require = createRequire(import.meta.url);
 const {limit: {verification: verificationLimit}, usergroups} = require('../util/default.json');
 const slashCommand = slashCommands.find( slashCommand => slashCommand.name === 'verify' );

+ 1 - 1
database.js

@@ -1,4 +1,4 @@
-import {createRequire} from 'module';
+import { createRequire } from 'module';
 import pg from 'pg';
 const require = createRequire(import.meta.url);
 const {defaultSettings} = require('./util/default.json');

+ 1 - 1
functions/global_block.js

@@ -1,5 +1,5 @@
 import cheerio from 'cheerio';
-import {got, escapeFormatting} from '../util/functions.js';
+import { got, escapeFormatting } from '../util/functions.js';
 
 /**
  * Add global blocks to user messages.

+ 4 - 3
functions/parse_page.js

@@ -1,7 +1,7 @@
 import cheerio from 'cheerio';
-import {MessageEmbed} from 'discord.js';
-import {toSection} from '../util/wiki.js';
-import {got, parse_infobox, htmlToPlain, htmlToDiscord, escapeFormatting, limitLength} from '../util/functions.js';
+import { MessageEmbed } from 'discord.js';
+import { toSection } from '../util/wiki.js';
+import { got, parse_infobox, htmlToPlain, htmlToDiscord, escapeFormatting, limitLength } from '../util/functions.js';
 
 const parsedContentModels = [
 	'wikitext',
@@ -51,6 +51,7 @@ const removeClasses = [
 	'.noprint',
 	'.noexcerpt',
 	'.sortkey',
+	'.mw-collapsible.mw-collapsed',
 	'wb\\:sectionedit'
 ];
 

+ 2 - 2
functions/phabricator.js

@@ -1,6 +1,6 @@
-import {MessageEmbed} from 'discord.js';
+import { MessageEmbed } from 'discord.js';
 import logging from '../util/logging.js';
-import {got, escapeFormatting, limitLength} from '../util/functions.js';
+import { got, escapeFormatting, limitLength } from '../util/functions.js';
 
 /**
  * Sends a Phabricator task.

+ 2 - 2
functions/verify.js

@@ -1,10 +1,10 @@
 import cheerio from 'cheerio';
-import {MessageEmbed, MessageActionRow, MessageButton, Permissions} from 'discord.js';
+import { MessageEmbed, MessageActionRow, MessageButton, Permissions } from 'discord.js';
 import db from '../util/database.js';
 import Lang from '../util/i18n.js';
 import Wiki from '../util/wiki.js';
 import logging from '../util/logging.js';
-import {got, oauthVerify, allowDelete, escapeFormatting} from '../util/functions.js';
+import { got, oauthVerify, allowDelete, escapeFormatting } from '../util/functions.js';
 
 /**
  * Processes the "verify" command.

+ 2 - 2
interactions/inline.js

@@ -1,7 +1,7 @@
-import {Permissions} from 'discord.js';
+import { Permissions } from 'discord.js';
 import logging from '../util/logging.js';
 import Wiki from '../util/wiki.js';
-import {got, limitLength, partialURIdecode, sendMessage} from '../util/functions.js';
+import { got, limitLength, partialURIdecode, sendMessage } from '../util/functions.js';
 
 /**
  * Post a message with inline wiki links.

+ 3 - 3
interactions/verify.js

@@ -1,8 +1,8 @@
-import {randomBytes} from 'crypto';
-import {MessageActionRow, MessageButton, Permissions} from 'discord.js';
+import { randomBytes } from 'crypto';
+import { MessageActionRow, MessageButton, Permissions } from 'discord.js';
 import db from '../util/database.js';
 import verify from '../functions/verify.js';
-import {got, oauthVerify, sendMessage} from '../util/functions.js';
+import { got, oauthVerify, sendMessage } from '../util/functions.js';
 
 /**
  * Wiki user verification.

+ 2 - 2
main.js

@@ -1,8 +1,8 @@
 import 'dotenv/config';
 import './database.js';
-import {fork as forkChildProcess} from 'child_process';
+import { fork as forkChildProcess } from 'child_process';
 import gotDefault from 'got';
-import {ShardingManager, ShardClientUtil} from 'discord.js';
+import { ShardingManager, ShardClientUtil } from 'discord.js';
 const {shardIdForGuildId} = ShardClientUtil;
 
 var isDebug = ( process.argv[2] === 'debug' );

+ 1 - 1
util/edit_diff.js

@@ -1,5 +1,5 @@
 import htmlparser from 'htmlparser2';
-import {escapeFormatting} from './functions.js';
+import { escapeFormatting } from './functions.js';
 
 /**
  * Change edit diffs to markdown text.

+ 1 - 1
util/extract_desc.js

@@ -1,4 +1,4 @@
-import {escapeFormatting} from './functions.js';
+import { escapeFormatting } from './functions.js';
 
 /**
  * Get the description for a page.

+ 21 - 10
util/functions.js

@@ -167,8 +167,14 @@ function htmlToPlain(html, includeComments = false) {
 	var ignoredTag = '';
 	var parser = new htmlparser.Parser( {
 		onopentag: (tagname, attribs) => {
-			if ( tagname === 'sup' && attribs.class === 'reference' ) ignoredTag = 'sup';
-			if ( tagname === 'span' && attribs.class === 'smwttcontent' ) ignoredTag = 'span';
+			let classes = ( attribs.class?.split(' ') ?? [] );
+			if ( classes.includes( 'noexcerpt' ) || ( classes.includes( 'mw-collapsible' ) && classes.includes( 'mw-collapsed' ) )
+			|| ( attribs.style?.includes( 'display' ) && /(^|;)\s*display\s*:\s*none\s*(;|$)/.test(attribs.style) ) ) {
+				ignoredTag = tagname;
+				return;
+			}
+			if ( tagname === 'sup' && classes.includes( 'reference' ) ) ignoredTag = 'sup';
+			if ( tagname === 'span' && classes.includes( 'smwttcontent' ) ) ignoredTag = 'span';
 			if ( tagname === 'br' ) text += ' ';
 		},
 		ontext: (htmltext) => {
@@ -209,8 +215,14 @@ function htmlToDiscord(html, pagelink = '', ...escapeArgs) {
 	var parser = new htmlparser.Parser( {
 		onopentag: (tagname, attribs) => {
 			if ( ignoredTag || code ) return;
-			if ( tagname === 'sup' && attribs.class === 'reference' ) ignoredTag = 'sup';
-			if ( tagname === 'span' && attribs.class === 'smwttcontent' ) ignoredTag = 'span';
+			let classes = ( attribs.class?.split(' ') ?? [] );
+			if ( classes.includes( 'noexcerpt' ) || ( classes.includes( 'mw-collapsible' ) && classes.includes( 'mw-collapsed' ) )
+			|| ( attribs.style?.includes( 'display' ) && /(^|;)\s*display\s*:\s*none\s*(;|$)/.test(attribs.style) ) ) {
+				ignoredTag = tagname;
+				return;
+			}
+			if ( tagname === 'sup' && classes.includes( 'reference' ) ) ignoredTag = 'sup';
+			if ( tagname === 'span' && classes.includes( 'smwttcontent' ) ) ignoredTag = 'span';
 			if ( tagname === 'code' ) {
 				code = true;
 				text += '`';
@@ -219,8 +231,7 @@ function htmlToDiscord(html, pagelink = '', ...escapeArgs) {
 				code = true;
 				text += '```' + syntaxhighlight + '\n';
 			}
-			if ( tagname === 'div' && attribs.class ) {
-				let classes = attribs.class.split(' ');
+			if ( tagname === 'div' && classes.length ) {
 				if ( classes.includes( 'mw-highlight' ) ) {
 					syntaxhighlight = ( classes.find( syntax => syntax.startsWith( 'mw-highlight-lang-' ) )?.replace( 'mw-highlight-lang-', '' ) || '' );
 				}
@@ -243,7 +254,7 @@ function htmlToDiscord(html, pagelink = '', ...escapeArgs) {
 			if ( tagname === 'li' ) {
 				text = text.replace( / +$/, '' );
 				if ( !text.endsWith( '\n' ) ) text += '\n';
-				if ( attribs.class !== 'mw-empty-elt' ) {
+				if ( !classes.includes( 'mw-empty-elt' ) ) {
 					if ( listlevel > -1 ) text += '\u200b '.repeat(4 * listlevel);
 					text += '• ';
 				}
@@ -252,7 +263,7 @@ function htmlToDiscord(html, pagelink = '', ...escapeArgs) {
 			if ( tagname === 'dt' ) {
 				text = text.replace( / +$/, '' );
 				if ( !text.endsWith( '\n' ) ) text += '\n';
-				if ( attribs.class !== 'mw-empty-elt' ) {
+				if ( !classes.includes( 'mw-empty-elt' ) ) {
 					if ( listlevel > -1 ) text += '\u200b '.repeat(4 * listlevel);
 					text += '**';
 				}
@@ -260,7 +271,7 @@ function htmlToDiscord(html, pagelink = '', ...escapeArgs) {
 			if ( tagname === 'dd' ) {
 				text = text.replace( / +$/, '' );
 				if ( !text.endsWith( '\n' ) ) text += '\n';
-				if ( listlevel > -1 && attribs.class !== 'mw-empty-elt' ) text += '\u200b '.repeat(4 * (listlevel + 1));
+				if ( listlevel > -1 && !classes.includes( 'mw-empty-elt' ) ) text += '\u200b '.repeat(4 * (listlevel + 1));
 			}
 			if ( tagname === 'img' ) {
 				if ( attribs.alt && attribs.src ) {
@@ -309,7 +320,7 @@ function htmlToDiscord(html, pagelink = '', ...escapeArgs) {
 				text += '';
 			}
 			if ( !pagelink ) return;
-			if ( tagname === 'a' && attribs.href && attribs.class !== 'new' && /^(?:(?:https?:)?\/\/|\/|#)/.test(attribs.href) ) {
+			if ( tagname === 'a' && attribs.href && !classes.includes( 'new' ) && /^(?:(?:https?:)?\/\/|\/|#)/.test(attribs.href) ) {
 				href = new URL(attribs.href, pagelink).href.replace( /[()]/g, '\\$&' );
 				if ( text.endsWith( '](<' + href + '>)' ) ) {
 					text = text.substring(0, text.length - ( href.length + 5 ));

+ 1 - 1
util/globals.js

@@ -1,4 +1,4 @@
-import {inspect} from 'util';
+import { inspect } from 'util';
 inspect.defaultOptions = {compact: false, breakLength: Infinity};
 
 /**

+ 1 - 1
util/i18n.js

@@ -1,4 +1,4 @@
-import {createRequire} from 'module';
+import { createRequire } from 'module';
 const require = createRequire(import.meta.url);
 const {defaultSettings} = require('./default.json');
 const i18n = require('../i18n/allLangs.json');

+ 1 - 1
util/logging.js

@@ -1,4 +1,4 @@
-import {createWriteStream} from 'fs';
+import { createWriteStream } from 'fs';
 
 /**
  * Log wikis by usage.

+ 5 - 5
util/newMessage.js

@@ -1,12 +1,12 @@
-import {readdir} from 'fs';
-import {domainToASCII} from 'url';
-import {Util} from 'discord.js';
+import { readdir } from 'fs';
+import { domainToASCII } from 'url';
+import { Util } from 'discord.js';
 import Wiki from './wiki.js';
 import logging from './logging.js';
-import {got, partialURIdecode} from './functions.js';
+import { got, partialURIdecode } from './functions.js';
 import check_wiki_general from '../cmds/wiki/general.js';
 import check_wiki_test from '../cmds/test.js';
-import {createRequire} from 'module';
+import { createRequire } from 'module';
 const require = createRequire(import.meta.url);
 const {limit: {command: commandLimit}, defaultSettings, wikiProjects} = require('./default.json');
 const check_wiki = {

+ 2 - 2
util/wiki.js

@@ -1,5 +1,5 @@
-import {inspect} from 'util';
-import {createRequire} from 'module';
+import { inspect } from 'util';
+import { createRequire } from 'module';
 const require = createRequire(import.meta.url);
 const {defaultSettings, wikiProjects} = require('./default.json');