Pepperbot initializing
This commit is contained in:
commit
18c5085262
20 changed files with 2762 additions and 0 deletions
5
.gitignore
vendored
Normal file
5
.gitignore
vendored
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
.env
|
||||||
|
src/logs
|
||||||
|
node_modules/
|
||||||
|
TheBubbles/
|
||||||
|
src/commands/cbrowser.js
|
1733
package-lock.json
generated
Normal file
1733
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load diff
19
package.json
Normal file
19
package.json
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
{
|
||||||
|
"name": "pepperbot",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"main": "src/index.js",
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
|
},
|
||||||
|
"keywords": [],
|
||||||
|
"author": "",
|
||||||
|
"license": "ISC",
|
||||||
|
"dependencies": {
|
||||||
|
"discord.js": "^14.13.0",
|
||||||
|
"discord.js-collector": "^1.8.9",
|
||||||
|
"dotenv": "^16.3.1",
|
||||||
|
"emoji-regex": "^10.2.1",
|
||||||
|
"regex": "^0.1.1"
|
||||||
|
}
|
||||||
|
}
|
26
src/commands/commands.js
Normal file
26
src/commands/commands.js
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
const { EmbedBuilder } = require("discord.js");
|
||||||
|
const fs = require("fs");
|
||||||
|
module.exports = {
|
||||||
|
name: "commands",
|
||||||
|
description: "commands list",
|
||||||
|
execute(message, args) {
|
||||||
|
let text = "";
|
||||||
|
|
||||||
|
const commandFiles = fs
|
||||||
|
.readdirSync("src/commands/")
|
||||||
|
.filter((file) => file.endsWith(".js"));
|
||||||
|
for (const file of commandFiles) {
|
||||||
|
const command = require(`./${file}`);
|
||||||
|
text += `p/${command.name} - ${command.description}\n`;
|
||||||
|
}
|
||||||
|
|
||||||
|
const embed = new EmbedBuilder();
|
||||||
|
embed.setTitle("PepperBot Commands");
|
||||||
|
embed.setDescription(text);
|
||||||
|
embed.setColor(0xff0000);
|
||||||
|
embed.setThumbnail(
|
||||||
|
"https://cdn.discordapp.com/attachments/755150633191080073/1149152214850469908/Map_Icon.png"
|
||||||
|
);
|
||||||
|
message.reply({ embeds: [embed] });
|
||||||
|
},
|
||||||
|
};
|
31
src/commands/crash.js
Normal file
31
src/commands/crash.js
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
const whitelist = ["440163494529073152"];
|
||||||
|
const fs = require("fs");
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
name: "crash",
|
||||||
|
description: "crashes the bot (throws an error), requires whitelist",
|
||||||
|
execute(message, args) {
|
||||||
|
if (whitelist.includes(message.author.id)) {
|
||||||
|
message.reply("crashing bot...");
|
||||||
|
fs.appendFileSync(
|
||||||
|
"../pepperbot/src/logs/errors.log",
|
||||||
|
"force crashed at " + Date() + "\n"
|
||||||
|
);
|
||||||
|
throw "crash command executed";
|
||||||
|
} else {
|
||||||
|
message.reply("UNAUTHORIZED");
|
||||||
|
const path = require("path");
|
||||||
|
const scriptName = path.basename(__filename);
|
||||||
|
fs.appendFileSync(
|
||||||
|
"../pepperbot/src/logs/failed.log",
|
||||||
|
"non whitelisted user " +
|
||||||
|
message.author.username +
|
||||||
|
" (" +
|
||||||
|
message.author +
|
||||||
|
") attempted accessing " +
|
||||||
|
scriptName +
|
||||||
|
"\n"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
};
|
136
src/commands/createreactionrole.js
Normal file
136
src/commands/createreactionrole.js
Normal file
|
@ -0,0 +1,136 @@
|
||||||
|
const { EmbedBuilder } = require("discord.js");
|
||||||
|
const emojiRegex = require("emoji-regex");
|
||||||
|
const irregularsRegex = require("../util/irregularsRegex.js");
|
||||||
|
const irregulars = require("../util/irregulars.json");
|
||||||
|
const fs = require("fs");
|
||||||
|
|
||||||
|
const getEmojis = (message) => {
|
||||||
|
const { content } = message;
|
||||||
|
const result = [];
|
||||||
|
// Normal emojis
|
||||||
|
const normalEmojis = content.match(emojiRegex());
|
||||||
|
if (normalEmojis) {
|
||||||
|
// for (const emoji of normalEmojis) {
|
||||||
|
normalEmojis.forEach((emoji) => {
|
||||||
|
result.push(emoji);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// Text emojis e.g ♥ ✂ 🗨
|
||||||
|
const textEmojis = content.match(irregularsRegex());
|
||||||
|
if (textEmojis) {
|
||||||
|
textEmojis.forEach((emoji) => {
|
||||||
|
result.push(irregulars[emoji.trim()]);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// Guild emojis
|
||||||
|
let guildEmojis = content.match(/:[_a-zA-Z0-9]*>/g);
|
||||||
|
if (guildEmojis) {
|
||||||
|
guildEmojis = guildEmojis.map((e) => e.substring(1, e.length - 1));
|
||||||
|
guildEmojis.forEach((e) => {
|
||||||
|
try {
|
||||||
|
const guildEmoji = message.guild.emojis.get(e);
|
||||||
|
if (guildEmoji) {
|
||||||
|
result.push(guildEmoji);
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.log(error);
|
||||||
|
console.log("tried using guild emote lmao");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// Attempt to sort the results if its not null
|
||||||
|
if (result) {
|
||||||
|
const query = message.content;
|
||||||
|
result.sort((a, b) => {
|
||||||
|
const irregularA = getKeyByValue(irregulars, a);
|
||||||
|
const irregularB = getKeyByValue(irregulars, b);
|
||||||
|
const index1 = irregularA || a;
|
||||||
|
const index2 = irregularB || b;
|
||||||
|
return query.indexOf(index1) - query.indexOf(index2);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
};
|
||||||
|
|
||||||
|
let collectors = [];
|
||||||
|
|
||||||
|
const whitelist = ["440163494529073152", "436321340304392222"];
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
name: "createreactionrole",
|
||||||
|
description: "creates reaction role, requires whitelist",
|
||||||
|
execute(message, args) {
|
||||||
|
if (whitelist.includes(message.author.id)) {
|
||||||
|
let emojis = getEmojis(message);
|
||||||
|
let emoji = emojis[0];
|
||||||
|
let role = message.mentions.roles.first();
|
||||||
|
if (!role) {
|
||||||
|
console.log("role variable missing");
|
||||||
|
fs.appendFileSync(
|
||||||
|
"../pepperbot/src/logs/failed.log",
|
||||||
|
"role variable missing" +
|
||||||
|
"from: " +
|
||||||
|
message.content +
|
||||||
|
" at " +
|
||||||
|
Date() +
|
||||||
|
"\n"
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!emoji) {
|
||||||
|
console.log("emoji variable missing");
|
||||||
|
fs.appendFileSync(
|
||||||
|
"../pepperbot/src/logs/failed.log",
|
||||||
|
" emoji variable missing" +
|
||||||
|
"from: " +
|
||||||
|
message.content +
|
||||||
|
" at " +
|
||||||
|
Date() +
|
||||||
|
"\n"
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const embed = new EmbedBuilder();
|
||||||
|
|
||||||
|
embed.setThumbnail(
|
||||||
|
"https://cdn.discordapp.com/attachments/755150633191080073/1149152214850469908/Map_Icon.png"
|
||||||
|
);
|
||||||
|
embed.setColor(0xff0000);
|
||||||
|
|
||||||
|
embed.setTitle(role.name);
|
||||||
|
embed.setDescription(
|
||||||
|
"React with " + emoji + " to recieve the " + role.name + " role."
|
||||||
|
);
|
||||||
|
|
||||||
|
message.channel.send({ embeds: [embed] }).then((m) => m.react(emoji));
|
||||||
|
|
||||||
|
const collectorFilter = function (reaction) {
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
|
const collector = message.createReactionCollector({
|
||||||
|
filter: collectorFilter,
|
||||||
|
});
|
||||||
|
collectors.push(collector);
|
||||||
|
|
||||||
|
collector.on("collect", (reaction, user) => {
|
||||||
|
console.log(`Collected ${reaction.emoji.name} from ${user.tag}`);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
message.reply("UNAUTHORIZED");
|
||||||
|
const path = require("path");
|
||||||
|
const scriptName = path.basename(__filename);
|
||||||
|
fs.appendFileSync(
|
||||||
|
"../pepperbot/src/logs/failed.log",
|
||||||
|
"non whitelisted user " +
|
||||||
|
message.author.username +
|
||||||
|
" (" +
|
||||||
|
message.author +
|
||||||
|
") attempted accessing " +
|
||||||
|
scriptName +
|
||||||
|
"\n"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
};
|
65
src/commands/dmuser.js
Normal file
65
src/commands/dmuser.js
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
const fs = require("fs");
|
||||||
|
|
||||||
|
const prefix = process.env.PREFIX;
|
||||||
|
|
||||||
|
function delay(time) {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
setTimeout(resolve, time);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
name: "dmuser",
|
||||||
|
description: "forces bot to dm a user something (this will ghost ping them)",
|
||||||
|
execute(message, args, client) {
|
||||||
|
const user = message.mentions.users.first();
|
||||||
|
if (!user) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const msgnoprefix = message.content.slice(
|
||||||
|
prefix.length + this.name.length + user.id.length + 4
|
||||||
|
);
|
||||||
|
|
||||||
|
console.log(typeof user);
|
||||||
|
console.log(user.username);
|
||||||
|
//const usercache = client.users.fetch(user.id, false, true);
|
||||||
|
|
||||||
|
const msg = msgnoprefix.slice(0, 2000);
|
||||||
|
|
||||||
|
if (msg !== "") {
|
||||||
|
user.send(msg);
|
||||||
|
message.delete();
|
||||||
|
fs.appendFileSync(
|
||||||
|
"../pepperbot/src/logs/forcesay.log",
|
||||||
|
Date() +
|
||||||
|
" " +
|
||||||
|
message.author.username +
|
||||||
|
" (" +
|
||||||
|
message.author +
|
||||||
|
") forced bot to dm " +
|
||||||
|
user.username +
|
||||||
|
msg +
|
||||||
|
"\n",
|
||||||
|
(err) => {
|
||||||
|
if (err !== null) {
|
||||||
|
console.error(err);
|
||||||
|
fs.appendFileSync(
|
||||||
|
"../pepperbot/src/logs/errors.log",
|
||||||
|
err + " from: " + message.content + " at " + Date()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
console.log(
|
||||||
|
Date() +
|
||||||
|
message.author.username +
|
||||||
|
" (" +
|
||||||
|
message.author +
|
||||||
|
") forced bot to dm " +
|
||||||
|
user.username +
|
||||||
|
msg +
|
||||||
|
"\n"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
};
|
21
src/commands/links.js
Normal file
21
src/commands/links.js
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
const { EmbedBuilder } = require("discord.js");
|
||||||
|
module.exports = {
|
||||||
|
name: "links",
|
||||||
|
description: 'posts "important" links',
|
||||||
|
execute(message, args) {
|
||||||
|
const embed = new EmbedBuilder();
|
||||||
|
embed.setTitle("very imphortance linkers");
|
||||||
|
embed.setThumbnail(
|
||||||
|
"https://cdn.discordapp.com/attachments/755150633191080073/1149152214850469908/Map_Icon.png"
|
||||||
|
);
|
||||||
|
embed.setColor(0xff0000);
|
||||||
|
|
||||||
|
embed.setDescription(`
|
||||||
|
https://reidlab.online
|
||||||
|
https://goop.network -- VERY IMPORTANT!!!!
|
||||||
|
pepper.church releasing [TIME] (never (not anytime soon))
|
||||||
|
`);
|
||||||
|
|
||||||
|
message.reply({ embeds: [embed] });
|
||||||
|
},
|
||||||
|
};
|
7
src/commands/mymovie.js
Normal file
7
src/commands/mymovie.js
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
module.exports = {
|
||||||
|
name: 'mymovie',
|
||||||
|
description: 'posts my movie',
|
||||||
|
execute(message, args){
|
||||||
|
message.reply('https://cdn.discordapp.com/attachments/755150633191080073/1149158052784775219/My_Movie.mp4')
|
||||||
|
}
|
||||||
|
}
|
12
src/commands/pepper.js
Normal file
12
src/commands/pepper.js
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
const { EmbedBuilder } = require('discord.js');
|
||||||
|
module.exports = {
|
||||||
|
name: 'pepper',
|
||||||
|
description: 'Muchas Perfectas!',
|
||||||
|
execute(message, args){
|
||||||
|
const embed = new EmbedBuilder
|
||||||
|
embed.setTitle('Muchas Perfectas!')
|
||||||
|
embed.setImage('https://cdn.discordapp.com/attachments/755150633191080073/1148815491822002177/240_F_531030593_fOjJqzacbhzXwL1F9Mfyv0ML3YzZfm5c.jpg')
|
||||||
|
embed.setColor(0xFF0000)
|
||||||
|
message.reply({ embeds: [embed] })
|
||||||
|
}
|
||||||
|
}
|
30
src/commands/say.js
Normal file
30
src/commands/say.js
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
const fs = require('fs')
|
||||||
|
|
||||||
|
const prefix = process.env.PREFIX
|
||||||
|
|
||||||
|
function delay(time) {
|
||||||
|
return new Promise(resolve => {
|
||||||
|
setTimeout(resolve, time);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
name: 'say',
|
||||||
|
description: 'forces bot to say something',
|
||||||
|
execute(message, args){
|
||||||
|
const msgnoprefix = message.content.slice(prefix.length + this.name.length)
|
||||||
|
const msg = msgnoprefix.slice(0, 2000)
|
||||||
|
|
||||||
|
if (msg !== '') {
|
||||||
|
message.channel.send(msg)
|
||||||
|
message.delete()
|
||||||
|
fs.appendFileSync("../pepperbot/src/logs/forcesay.log", Date() + " " + message.author.username + " (" + message.author + ") forced bot to say " + msg + "\n", (err) => {
|
||||||
|
if (err !== null) {
|
||||||
|
console.error(err)
|
||||||
|
fs.appendFileSync("../pepperbot/src/logs/errors.log", err + ' from: ' + message.content + " at " + Date())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
console.log(Date() + " " + message.author.username + " (" + message.author + ") forced bot to say " + msg)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
35
src/commands/sendlog.js
Normal file
35
src/commands/sendlog.js
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
const { Collection } = require("discord.js");
|
||||||
|
const prefix = process.env.PREFIX;
|
||||||
|
const ignore = [];
|
||||||
|
const fs = require("fs");
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
name: "sendlog",
|
||||||
|
description: "sends log file (if the file is valid)",
|
||||||
|
execute(message, args) {
|
||||||
|
let msgnoprefix = message.content.slice(
|
||||||
|
prefix.length + this.name.length + 1
|
||||||
|
);
|
||||||
|
if (!msgnoprefix.endsWith(".log")) {
|
||||||
|
msgnoprefix += ".log";
|
||||||
|
}
|
||||||
|
|
||||||
|
const logs = fs
|
||||||
|
.readdirSync("../pepperbot/src/logs/")
|
||||||
|
.filter((file) => file.endsWith(".log"));
|
||||||
|
if (!logs.includes(msgnoprefix)) {
|
||||||
|
message.reply("invalid log file");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (ignore.includes(msgnoprefix)) return;
|
||||||
|
const path = `../pepperbot/src/logs/${msgnoprefix}`;
|
||||||
|
message.channel.send({
|
||||||
|
files: [
|
||||||
|
{
|
||||||
|
attachment: path,
|
||||||
|
name: "file.log",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
},
|
||||||
|
};
|
7
src/commands/test.js
Normal file
7
src/commands/test.js
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
module.exports = {
|
||||||
|
name: "test",
|
||||||
|
description: "test command",
|
||||||
|
execute(message, args) {
|
||||||
|
message.reply("MOTHAFUCKA SHUT UPPPPPP");
|
||||||
|
},
|
||||||
|
};
|
128
src/index.js
Normal file
128
src/index.js
Normal file
|
@ -0,0 +1,128 @@
|
||||||
|
require("dotenv").config();
|
||||||
|
const {
|
||||||
|
Client,
|
||||||
|
IntentsBitField,
|
||||||
|
EmbedBuilder,
|
||||||
|
Collection,
|
||||||
|
} = require("discord.js");
|
||||||
|
|
||||||
|
const fs = require("fs");
|
||||||
|
|
||||||
|
const client = new Client({
|
||||||
|
intents: [
|
||||||
|
IntentsBitField.Flags.Guilds,
|
||||||
|
IntentsBitField.Flags.GuildMembers,
|
||||||
|
IntentsBitField.Flags.GuildMessages,
|
||||||
|
IntentsBitField.Flags.MessageContent,
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
client.commands = new Collection();
|
||||||
|
|
||||||
|
const commandFiles = fs
|
||||||
|
.readdirSync("src/commands/")
|
||||||
|
.filter((file) => file.endsWith(".js"));
|
||||||
|
for (const file of commandFiles) {
|
||||||
|
(async () => {
|
||||||
|
const command = await import(`./commands/${file}`);
|
||||||
|
client.commands.set(command.default.name, command.default);
|
||||||
|
})();
|
||||||
|
}
|
||||||
|
|
||||||
|
const prefix = process.env.PREFIX;
|
||||||
|
|
||||||
|
client.on("ready", (c) => {
|
||||||
|
console.log(`${c.user.tag} is online.`);
|
||||||
|
const channel = client.channels.cache.get("1148814162273763418");
|
||||||
|
channel.send("pepperbot restart complete");
|
||||||
|
});
|
||||||
|
|
||||||
|
client.on("messageDelete", async (message) => {
|
||||||
|
if (message.content.startsWith(prefix)) {
|
||||||
|
const args = message.content.slice(prefix.length).split(/ +/);
|
||||||
|
const command = args.shift().toLowerCase();
|
||||||
|
if (!client.commands.has(command)) {
|
||||||
|
fs.appendFileSync(
|
||||||
|
"../pepperbot/src/logs/deletedmessages.log",
|
||||||
|
"deleted message from: " +
|
||||||
|
message.author.username +
|
||||||
|
"(" +
|
||||||
|
message.author +
|
||||||
|
") at " +
|
||||||
|
Date() +
|
||||||
|
' with: "' +
|
||||||
|
message.content +
|
||||||
|
'"\n'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
fs.appendFileSync(
|
||||||
|
"../pepperbot/src/logs/deletedmessages.log",
|
||||||
|
"deleted message from: " +
|
||||||
|
message.author.username +
|
||||||
|
"(" +
|
||||||
|
message.author +
|
||||||
|
") at " +
|
||||||
|
Date() +
|
||||||
|
' with: "' +
|
||||||
|
message.content +
|
||||||
|
'"\n'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
client.on("messageCreate", async (message) => {
|
||||||
|
if (!message.content.startsWith(prefix)) return;
|
||||||
|
const args = message.content.slice(prefix.length).split(/ +/);
|
||||||
|
const command = args.shift().toLowerCase();
|
||||||
|
|
||||||
|
/*if (message.channelId !== "1148814162273763418") {
|
||||||
|
let text = "commands only work in <#1148814162273763418>";
|
||||||
|
if (!client.commands.has(command)) {
|
||||||
|
text += ", also thats not a command lmao";
|
||||||
|
}
|
||||||
|
message.reply(text);
|
||||||
|
return;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
if (!client.commands.has(command)) {
|
||||||
|
message.reply("idiot thats not a command");
|
||||||
|
fs.appendFileSync(
|
||||||
|
"../pepperbot/src/logs/failed.log",
|
||||||
|
"invalid command: " + "from: " + message.content + " at " + Date() + "\n"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (client.commands.get(command)) {
|
||||||
|
client.commands.get(command).execute(message, args, client);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
client.on("interactionCreate", (interaction) => {
|
||||||
|
if (!interaction.isChatInputCommand()) return;
|
||||||
|
|
||||||
|
if (interaction.commandName === "test") {
|
||||||
|
interaction.reply(
|
||||||
|
"mothafucka you contacted my ass from a slash command end urself"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (interaction.commandName === "say") {
|
||||||
|
try {
|
||||||
|
const msg = interaction.options.get("message");
|
||||||
|
interaction.reply(msg.value);
|
||||||
|
} catch (error) {
|
||||||
|
console.log(error);
|
||||||
|
fs.appendFile(
|
||||||
|
"../pepperbot/src/logs/errors.log",
|
||||||
|
error + "from: " + interaction.msg + " at " + Date()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (interaction.commandName === "commands") {
|
||||||
|
client.commands.get("commands").execute(interaction, undefined);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
client.login(process.env.TOKEN);
|
52
src/register-commands.js
Normal file
52
src/register-commands.js
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
require('dotenv').config();
|
||||||
|
const { REST, Routes, ApplicationCommandOptionType } = require('discord.js');
|
||||||
|
|
||||||
|
export const commands = [
|
||||||
|
{
|
||||||
|
name: 'say',
|
||||||
|
description: 'forces bot to say message',
|
||||||
|
options: [
|
||||||
|
{
|
||||||
|
name: 'message',
|
||||||
|
description: 'the message',
|
||||||
|
type: ApplicationCommandOptionType.String,
|
||||||
|
required: true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'administer',
|
||||||
|
description: 'administer.',
|
||||||
|
options: [
|
||||||
|
{
|
||||||
|
name: 'password',
|
||||||
|
description: 'the protections.',
|
||||||
|
type: ApplicationCommandOptionType.String,
|
||||||
|
required: true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'commands',
|
||||||
|
description: 'sends a command list',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'test',
|
||||||
|
description: 'test command',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const rest = new REST({ version: '10' }).setToken(process.env.TOKEN);
|
||||||
|
|
||||||
|
(async () => {
|
||||||
|
try {
|
||||||
|
await rest.put(
|
||||||
|
Routes.applicationGuildCommands(process.env.CLIENT_ID, process.env.GUILD_ID),
|
||||||
|
{ body: commands }
|
||||||
|
)
|
||||||
|
|
||||||
|
console.log("slash commands registered")
|
||||||
|
} catch (error) {
|
||||||
|
console.log(error);
|
||||||
|
}
|
||||||
|
})();
|
23
src/util/buildJson.js
Normal file
23
src/util/buildJson.js
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
const fs = require('fs');
|
||||||
|
const path = require('path');
|
||||||
|
|
||||||
|
const input = fs.readFileSync(path.resolve(__dirname, './irregulars.txt'), {
|
||||||
|
encoding: 'utf-8',
|
||||||
|
});
|
||||||
|
|
||||||
|
const data = input.split('\n');
|
||||||
|
|
||||||
|
const lines = data
|
||||||
|
.map((entry, i, arr) => {
|
||||||
|
const emojis = entry.split(',');
|
||||||
|
let jsonLine = ` "${emojis[1]}": "${emojis[0]}"`;
|
||||||
|
if (arr.length - 1 !== i) jsonLine += ',';
|
||||||
|
return jsonLine;
|
||||||
|
})
|
||||||
|
.join('\n');
|
||||||
|
|
||||||
|
const json = `{\n${lines}\n}`;
|
||||||
|
|
||||||
|
fs.writeFileSync(path.resolve(__dirname, 'irregulars.json'), json, {
|
||||||
|
encoding: 'utf-8',
|
||||||
|
});
|
25
src/util/buildRegex.js
Normal file
25
src/util/buildRegex.js
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
const fs = require('fs');
|
||||||
|
const path = require('path');
|
||||||
|
|
||||||
|
const base = '/❤/g';
|
||||||
|
|
||||||
|
const input = fs.readFileSync(path.resolve(__dirname, 'irregulars.txt'), {
|
||||||
|
encoding: 'utf-8',
|
||||||
|
});
|
||||||
|
|
||||||
|
const data = input.split('\n');
|
||||||
|
|
||||||
|
const piped = data
|
||||||
|
.map(emoji => {
|
||||||
|
const raw = emoji.split(',')[1];
|
||||||
|
return raw.replace(/\*/g, '\\*');
|
||||||
|
})
|
||||||
|
.join('|');
|
||||||
|
|
||||||
|
const regex = base.replace(/❤/g, piped);
|
||||||
|
|
||||||
|
const js = `module.exports = () => ${regex};`;
|
||||||
|
|
||||||
|
fs.writeFileSync(path.resolve(__dirname, 'irregularsRegex.js'), js, {
|
||||||
|
encoding: 'utf-8',
|
||||||
|
});
|
204
src/util/irregulars.json
Normal file
204
src/util/irregulars.json
Normal file
|
@ -0,0 +1,204 @@
|
||||||
|
{
|
||||||
|
"🅰": ":a:",
|
||||||
|
"🅱": ":b:",
|
||||||
|
"🅾": ":o2:",
|
||||||
|
"🅿": ":parking:",
|
||||||
|
"🈂": ":sa:",
|
||||||
|
"🈷": ":u6708:",
|
||||||
|
"🌡": ":thermometer:",
|
||||||
|
"🌤": ":white_sun_small_cloud:",
|
||||||
|
"🌥": ":white_sun_cloud:",
|
||||||
|
"🌦": ":white_sun_rain_cloud:",
|
||||||
|
"🌧": ":cloud_rain:",
|
||||||
|
"🌨": ":cloud_snow:",
|
||||||
|
"🌩": ":cloud_lightning:",
|
||||||
|
"🌪": ":cloud_tornado:",
|
||||||
|
"🌫": ":fog:",
|
||||||
|
"🌬": ":wind_blowing_face:",
|
||||||
|
"🌶": ":hot_pepper:",
|
||||||
|
"🍽": ":fork_knife_plate:",
|
||||||
|
"🎖": ":military_medal:",
|
||||||
|
"🎗": ":reminder_ribbon:",
|
||||||
|
"🎙": ":microphone2:",
|
||||||
|
"🎚": ":level_slider:",
|
||||||
|
"🎛": ":control_knobs:",
|
||||||
|
"🎞": ":film_frames:",
|
||||||
|
"🎟": ":tickets:",
|
||||||
|
"🏍": ":motorcycle:",
|
||||||
|
"🏎": ":race_car:",
|
||||||
|
"🏔": ":mountain_snow:",
|
||||||
|
"🏕": ":camping:",
|
||||||
|
"🏖": ":beach:",
|
||||||
|
"🏗": ":construction_site:",
|
||||||
|
"🏘": ":homes:",
|
||||||
|
"🏙": ":cityscape:",
|
||||||
|
"🏚": ":house_abandoned:",
|
||||||
|
"🏛": ":classical_building:",
|
||||||
|
"🏜": ":desert:",
|
||||||
|
"🏝": ":island:",
|
||||||
|
"🏞": ":park:",
|
||||||
|
"🏟": ":stadium:",
|
||||||
|
"🏳": ":flag_white:",
|
||||||
|
"🏵": ":rosette:",
|
||||||
|
"🏷": ":label:",
|
||||||
|
"🐿": ":chipmunk:",
|
||||||
|
"👁🗨": ":eye_in_speech_bubble:",
|
||||||
|
"👁": ":eye:",
|
||||||
|
"📽": ":projector:",
|
||||||
|
"🕉": ":om_symbol:",
|
||||||
|
"🕊": ":dove:",
|
||||||
|
"🕯": ":candle:",
|
||||||
|
"🕰": ":clock:",
|
||||||
|
"🕳": ":hole:",
|
||||||
|
"🕶": ":dark_sunglasses:",
|
||||||
|
"🕷": ":spider:",
|
||||||
|
"🕸": ":spider_web:",
|
||||||
|
"🕹": ":joystick:",
|
||||||
|
"🖇": ":paperclips:",
|
||||||
|
"🖊": ":pen_ballpoint:",
|
||||||
|
"🖋": ":pen_fountain:",
|
||||||
|
"🖌": ":paintbrush:",
|
||||||
|
"🖍": ":crayon:",
|
||||||
|
"🖥": ":desktop:",
|
||||||
|
"🖨": ":printer:",
|
||||||
|
"🖱": ":mouse_three_button:",
|
||||||
|
"🖲": ":trackball:",
|
||||||
|
"🖼": ":frame_photo:",
|
||||||
|
"🗂": ":dividers:",
|
||||||
|
"🗃": ":card_box:",
|
||||||
|
"🗄": ":file_cabinet:",
|
||||||
|
"🗑": ":wastebasket:",
|
||||||
|
"🗒": ":notepad_spiral:",
|
||||||
|
"🗓": ":calendar_spiral:",
|
||||||
|
"🗜": ":compression:",
|
||||||
|
"🗝": ":key2:",
|
||||||
|
"🗞": ":newspaper2:",
|
||||||
|
"🗡": ":dagger:",
|
||||||
|
"🗣": ":speaking_head:",
|
||||||
|
"🗨": ":speech_left:",
|
||||||
|
"🗯": ":anger_right:",
|
||||||
|
"🗳": ":ballot_box:",
|
||||||
|
"🗺": ":map:",
|
||||||
|
"🛋": ":couch:",
|
||||||
|
"🛍": ":shopping_bags:",
|
||||||
|
"🛎": ":bellhop:",
|
||||||
|
"🛏": ":bed:",
|
||||||
|
"🛠": ":tools:",
|
||||||
|
"🛡": ":shield:",
|
||||||
|
"🛢": ":oil:",
|
||||||
|
"🛣": ":motorway:",
|
||||||
|
"🛤": ":railway_track:",
|
||||||
|
"🛥": ":motorboat:",
|
||||||
|
"🛩": ":airplane_small:",
|
||||||
|
"🛰": ":satellite_orbital:",
|
||||||
|
"🛳": ":cruise_ship:",
|
||||||
|
"‼": ":bangbang:",
|
||||||
|
"⁉": ":interrobang:",
|
||||||
|
"ℹ": ":information_source:",
|
||||||
|
"↔": ":left_right_arrow:",
|
||||||
|
"↕": ":arrow_up_down:",
|
||||||
|
"↖": ":arrow_upper_left:",
|
||||||
|
"↗": ":arrow_upper_right:",
|
||||||
|
"↘": ":arrow_lower_right:",
|
||||||
|
"↙": ":arrow_lower_left:",
|
||||||
|
"↩": ":leftwards_arrow_with_hook:",
|
||||||
|
"↪": ":arrow_right_hook:",
|
||||||
|
"#⃣": ":hash:",
|
||||||
|
"⌨": ":keyboard:",
|
||||||
|
"⏏": ":eject:",
|
||||||
|
"⏭": ":track_next:",
|
||||||
|
"⏮": ":track_previous:",
|
||||||
|
"⏯": ":play_pause:",
|
||||||
|
"⏱": ":stopwatch:",
|
||||||
|
"⏲": ":timer:",
|
||||||
|
"⏸": ":pause_button:",
|
||||||
|
"⏹": ":stop_button:",
|
||||||
|
"⏺": ":record_button:",
|
||||||
|
"Ⓜ": ":m:",
|
||||||
|
"▪": ":black_small_square:",
|
||||||
|
"▫": ":white_small_square:",
|
||||||
|
"▶": ":arrow_forward:",
|
||||||
|
"◀": ":arrow_backward:",
|
||||||
|
"◻": ":white_medium_square:",
|
||||||
|
"◼": ":black_medium_square:",
|
||||||
|
"☀": ":sunny:",
|
||||||
|
"☁": ":cloud:",
|
||||||
|
"☂": ":umbrella2:",
|
||||||
|
"☃": ":snowman2:",
|
||||||
|
"☄": ":comet:",
|
||||||
|
"☎": ":telephone:",
|
||||||
|
"☑": ":ballot_box_with_check:",
|
||||||
|
"☘": ":shamrock:",
|
||||||
|
"☠": ":skull_crossbones:",
|
||||||
|
"☢": ":radioactive:",
|
||||||
|
"☣": ":biohazard:",
|
||||||
|
"☦": ":orthodox_cross:",
|
||||||
|
"☪": ":star_and_crescent:",
|
||||||
|
"☮": ":peace:",
|
||||||
|
"☯": ":yin_yang:",
|
||||||
|
"☸": ":wheel_of_dharma:",
|
||||||
|
"☹": ":frowning2:",
|
||||||
|
"☺": ":relaxed:",
|
||||||
|
"♠": ":spades:",
|
||||||
|
"♣": ":clubs:",
|
||||||
|
"♥": ":hearts:",
|
||||||
|
"♦": ":diamonds:",
|
||||||
|
"♨": ":hotsprings:",
|
||||||
|
"♻": ":recycle:",
|
||||||
|
"⚒": ":hammer_pick:",
|
||||||
|
"⚔": ":crossed_swords:",
|
||||||
|
"⚖": ":scales:",
|
||||||
|
"⚗": ":alembic:",
|
||||||
|
"⚙": ":gear:",
|
||||||
|
"⚛": ":atom:",
|
||||||
|
"⚜": ":fleur_de_lis:",
|
||||||
|
"⚠": ":warning:",
|
||||||
|
"⚰": ":coffin:",
|
||||||
|
"⚱": ":urn:",
|
||||||
|
"⛈": ":thunder_cloud_rain:",
|
||||||
|
"⛏": ":pick:",
|
||||||
|
"⛑": ":helmet_with_cross:",
|
||||||
|
"⛓": ":chains:",
|
||||||
|
"⛩": ":shinto_shrine:",
|
||||||
|
"⛰": ":mountain:",
|
||||||
|
"⛱": ":beach_umbrella:",
|
||||||
|
"⛴": ":ferry:",
|
||||||
|
"⛷": ":skier:",
|
||||||
|
"⛸": ":ice_skate:",
|
||||||
|
"✂": ":scissors:",
|
||||||
|
"✈": ":airplane:",
|
||||||
|
"✉": ":envelope:",
|
||||||
|
"✏": ":pencil2:",
|
||||||
|
"✒": ":black_nib:",
|
||||||
|
"✔": ":heavy_check_mark:",
|
||||||
|
"✖": ":heavy_multiplication_x:",
|
||||||
|
"✝": ":cross:",
|
||||||
|
"✡": ":star_of_david:",
|
||||||
|
"✳": ":eight_spoked_asterisk:",
|
||||||
|
"✴": ":eight_pointed_black_star:",
|
||||||
|
"❄": ":snowflake:",
|
||||||
|
"❇": ":sparkle:",
|
||||||
|
"❣": ":heart_exclamation:",
|
||||||
|
"❤": ":heart:",
|
||||||
|
"➡": ":arrow_right:",
|
||||||
|
"⤴": ":arrow_heading_up:",
|
||||||
|
"⤵": ":arrow_heading_down:",
|
||||||
|
"*⃣": ":asterisk:",
|
||||||
|
"⬅": ":arrow_left:",
|
||||||
|
"⬆": ":arrow_up:",
|
||||||
|
"⬇": ":arrow_down:",
|
||||||
|
"0⃣": ":zero:",
|
||||||
|
"〰": ":wavy_dash:",
|
||||||
|
"〽": ":part_alternation_mark:",
|
||||||
|
"1⃣": ":one:",
|
||||||
|
"2⃣": ":two:",
|
||||||
|
"㊗": ":congratulations:",
|
||||||
|
"㊙": ":secret:",
|
||||||
|
"3⃣": ":three:",
|
||||||
|
"4⃣": ":four:",
|
||||||
|
"5⃣": ":five:",
|
||||||
|
"6⃣": ":six:",
|
||||||
|
"7⃣": ":seven:",
|
||||||
|
"8⃣": ":eight:",
|
||||||
|
"9⃣": ":nine:"
|
||||||
|
}
|
202
src/util/irregulars.txt
Normal file
202
src/util/irregulars.txt
Normal file
|
@ -0,0 +1,202 @@
|
||||||
|
:a:,🅰
|
||||||
|
:b:,🅱
|
||||||
|
:o2:,🅾
|
||||||
|
:parking:,🅿
|
||||||
|
:sa:,🈂
|
||||||
|
:u6708:,🈷
|
||||||
|
:thermometer:,🌡
|
||||||
|
:white_sun_small_cloud:,🌤
|
||||||
|
:white_sun_cloud:,🌥
|
||||||
|
:white_sun_rain_cloud:,🌦
|
||||||
|
:cloud_rain:,🌧
|
||||||
|
:cloud_snow:,🌨
|
||||||
|
:cloud_lightning:,🌩
|
||||||
|
:cloud_tornado:,🌪
|
||||||
|
:fog:,🌫
|
||||||
|
:wind_blowing_face:,🌬
|
||||||
|
:hot_pepper:,🌶
|
||||||
|
:fork_knife_plate:,🍽
|
||||||
|
:military_medal:,🎖
|
||||||
|
:reminder_ribbon:,🎗
|
||||||
|
:microphone2:,🎙
|
||||||
|
:level_slider:,🎚
|
||||||
|
:control_knobs:,🎛
|
||||||
|
:film_frames:,🎞
|
||||||
|
:tickets:,🎟
|
||||||
|
:motorcycle:,🏍
|
||||||
|
:race_car:,🏎
|
||||||
|
:mountain_snow:,🏔
|
||||||
|
:camping:,🏕
|
||||||
|
:beach:,🏖
|
||||||
|
:construction_site:,🏗
|
||||||
|
:homes:,🏘
|
||||||
|
:cityscape:,🏙
|
||||||
|
:house_abandoned:,🏚
|
||||||
|
:classical_building:,🏛
|
||||||
|
:desert:,🏜
|
||||||
|
:island:,🏝
|
||||||
|
:park:,🏞
|
||||||
|
:stadium:,🏟
|
||||||
|
:flag_white:,🏳
|
||||||
|
:rosette:,🏵
|
||||||
|
:label:,🏷
|
||||||
|
:chipmunk:,🐿
|
||||||
|
:eye_in_speech_bubble:,👁🗨
|
||||||
|
:eye:,👁
|
||||||
|
:projector:,📽
|
||||||
|
:om_symbol:,🕉
|
||||||
|
:dove:,🕊
|
||||||
|
:candle:,🕯
|
||||||
|
:clock:,🕰
|
||||||
|
:hole:,🕳
|
||||||
|
:dark_sunglasses:,🕶
|
||||||
|
:spider:,🕷
|
||||||
|
:spider_web:,🕸
|
||||||
|
:joystick:,🕹
|
||||||
|
:paperclips:,🖇
|
||||||
|
:pen_ballpoint:,🖊
|
||||||
|
:pen_fountain:,🖋
|
||||||
|
:paintbrush:,🖌
|
||||||
|
:crayon:,🖍
|
||||||
|
:desktop:,🖥
|
||||||
|
:printer:,🖨
|
||||||
|
:mouse_three_button:,🖱
|
||||||
|
:trackball:,🖲
|
||||||
|
:frame_photo:,🖼
|
||||||
|
:dividers:,🗂
|
||||||
|
:card_box:,🗃
|
||||||
|
:file_cabinet:,🗄
|
||||||
|
:wastebasket:,🗑
|
||||||
|
:notepad_spiral:,🗒
|
||||||
|
:calendar_spiral:,🗓
|
||||||
|
:compression:,🗜
|
||||||
|
:key2:,🗝
|
||||||
|
:newspaper2:,🗞
|
||||||
|
:dagger:,🗡
|
||||||
|
:speaking_head:,🗣
|
||||||
|
:speech_left:,🗨
|
||||||
|
:anger_right:,🗯
|
||||||
|
:ballot_box:,🗳
|
||||||
|
:map:,🗺
|
||||||
|
:couch:,🛋
|
||||||
|
:shopping_bags:,🛍
|
||||||
|
:bellhop:,🛎
|
||||||
|
:bed:,🛏
|
||||||
|
:tools:,🛠
|
||||||
|
:shield:,🛡
|
||||||
|
:oil:,🛢
|
||||||
|
:motorway:,🛣
|
||||||
|
:railway_track:,🛤
|
||||||
|
:motorboat:,🛥
|
||||||
|
:airplane_small:,🛩
|
||||||
|
:satellite_orbital:,🛰
|
||||||
|
:cruise_ship:,🛳
|
||||||
|
:bangbang:,‼
|
||||||
|
:interrobang:,⁉
|
||||||
|
:information_source:,ℹ
|
||||||
|
:left_right_arrow:,↔
|
||||||
|
:arrow_up_down:,↕
|
||||||
|
:arrow_upper_left:,↖
|
||||||
|
:arrow_upper_right:,↗
|
||||||
|
:arrow_lower_right:,↘
|
||||||
|
:arrow_lower_left:,↙
|
||||||
|
:leftwards_arrow_with_hook:,↩
|
||||||
|
:arrow_right_hook:,↪
|
||||||
|
:hash:,#⃣
|
||||||
|
:keyboard:,⌨
|
||||||
|
:eject:,⏏
|
||||||
|
:track_next:,⏭
|
||||||
|
:track_previous:,⏮
|
||||||
|
:play_pause:,⏯
|
||||||
|
:stopwatch:,⏱
|
||||||
|
:timer:,⏲
|
||||||
|
:pause_button:,⏸
|
||||||
|
:stop_button:,⏹
|
||||||
|
:record_button:,⏺
|
||||||
|
:m:,Ⓜ
|
||||||
|
:black_small_square:,▪
|
||||||
|
:white_small_square:,▫
|
||||||
|
:arrow_forward:,▶
|
||||||
|
:arrow_backward:,◀
|
||||||
|
:white_medium_square:,◻
|
||||||
|
:black_medium_square:,◼
|
||||||
|
:sunny:,☀
|
||||||
|
:cloud:,☁
|
||||||
|
:umbrella2:,☂
|
||||||
|
:snowman2:,☃
|
||||||
|
:comet:,☄
|
||||||
|
:telephone:,☎
|
||||||
|
:ballot_box_with_check:,☑
|
||||||
|
:shamrock:,☘
|
||||||
|
:skull_crossbones:,☠
|
||||||
|
:radioactive:,☢
|
||||||
|
:biohazard:,☣
|
||||||
|
:orthodox_cross:,☦
|
||||||
|
:star_and_crescent:,☪
|
||||||
|
:peace:,☮
|
||||||
|
:yin_yang:,☯
|
||||||
|
:wheel_of_dharma:,☸
|
||||||
|
:frowning2:,☹
|
||||||
|
:relaxed:,☺
|
||||||
|
:spades:,♠
|
||||||
|
:clubs:,♣
|
||||||
|
:hearts:,♥
|
||||||
|
:diamonds:,♦
|
||||||
|
:hotsprings:,♨
|
||||||
|
:recycle:,♻
|
||||||
|
:hammer_pick:,⚒
|
||||||
|
:crossed_swords:,⚔
|
||||||
|
:scales:,⚖
|
||||||
|
:alembic:,⚗
|
||||||
|
:gear:,⚙
|
||||||
|
:atom:,⚛
|
||||||
|
:fleur_de_lis:,⚜
|
||||||
|
:warning:,⚠
|
||||||
|
:coffin:,⚰
|
||||||
|
:urn:,⚱
|
||||||
|
:thunder_cloud_rain:,⛈
|
||||||
|
:pick:,⛏
|
||||||
|
:helmet_with_cross:,⛑
|
||||||
|
:chains:,⛓
|
||||||
|
:shinto_shrine:,⛩
|
||||||
|
:mountain:,⛰
|
||||||
|
:beach_umbrella:,⛱
|
||||||
|
:ferry:,⛴
|
||||||
|
:skier:,⛷
|
||||||
|
:ice_skate:,⛸
|
||||||
|
:scissors:,✂
|
||||||
|
:airplane:,✈
|
||||||
|
:envelope:,✉
|
||||||
|
:pencil2:,✏
|
||||||
|
:black_nib:,✒
|
||||||
|
:heavy_check_mark:,✔
|
||||||
|
:heavy_multiplication_x:,✖
|
||||||
|
:cross:,✝
|
||||||
|
:star_of_david:,✡
|
||||||
|
:eight_spoked_asterisk:,✳
|
||||||
|
:eight_pointed_black_star:,✴
|
||||||
|
:snowflake:,❄
|
||||||
|
:sparkle:,❇
|
||||||
|
:heart_exclamation:,❣
|
||||||
|
:heart:,❤
|
||||||
|
:arrow_right:,➡
|
||||||
|
:arrow_heading_up:,⤴
|
||||||
|
:arrow_heading_down:,⤵
|
||||||
|
:asterisk:,*⃣
|
||||||
|
:arrow_left:,⬅
|
||||||
|
:arrow_up:,⬆
|
||||||
|
:arrow_down:,⬇
|
||||||
|
:zero:,0⃣
|
||||||
|
:wavy_dash:,〰
|
||||||
|
:part_alternation_mark:,〽
|
||||||
|
:one:,1⃣
|
||||||
|
:two:,2⃣
|
||||||
|
:congratulations:,㊗
|
||||||
|
:secret:,㊙
|
||||||
|
:three:,3⃣
|
||||||
|
:four:,4⃣
|
||||||
|
:five:,5⃣
|
||||||
|
:six:,6⃣
|
||||||
|
:seven:,7⃣
|
||||||
|
:eight:,8⃣
|
||||||
|
:nine:,9⃣
|
1
src/util/irregularsRegex.js
Normal file
1
src/util/irregularsRegex.js
Normal file
|
@ -0,0 +1 @@
|
||||||
|
module.exports = () => /🅰|🅱|🅾|🅿|🈂|🈷|🌡|🌤|🌥|🌦|🌧|🌨|🌩|🌪|🌫|🌬|🌶|🍽|🎖|🎗|🎙|🎚|🎛|🎞|🎟|🏍|🏎|🏔|🏕|🏖|🏗|🏘|🏙|🏚|🏛|🏜|🏝|🏞|🏟|🏳|🏵|🏷|🐿|👁🗨|👁|📽|🕉|🕊|🕯|🕰|🕳|🕶|🕷|🕸|🕹|🖇|🖊|🖋|🖌|🖍|🖥|🖨|🖱|🖲|🖼|🗂|🗃|🗄|🗑|🗒|🗓|🗜|🗝|🗞|🗡|🗣|🗨|🗯|🗳|🗺|🛋|🛍|🛎|🛏|🛠|🛡|🛢|🛣|🛤|🛥|🛩|🛰|🛳|‼|⁉|ℹ|↔|↕|↖|↗|↘|↙|↩|↪|#⃣|⌨|⏏|⏭|⏮|⏯|⏱|⏲|⏸|⏹|⏺|Ⓜ|▪|▫|▶|◀|◻|◼|☀|☁|☂|☃|☄|☎|☑|☘|☠|☢|☣|☦|☪|☮|☯|☸|☹|☺|♠|♣|♥|♦|♨|♻|⚒|⚔|⚖|⚗|⚙|⚛|⚜|⚠|⚰|⚱|⛈|⛏|⛑|⛓|⛩|⛰|⛱|⛴|⛷|⛸|✂|✈|✉|✏|✒|✔|✖|✝|✡|✳|✴|❄|❇|❣|❤|➡|⤴|⤵|\*⃣|⬅|⬆|⬇|0⃣|〰|〽|1⃣|2⃣|㊗|㊙|3⃣|4⃣|5⃣|6⃣|7⃣|8⃣|9⃣/g;
|
Loading…
Add table
Add a link
Reference in a new issue