Pepperbot initializing

This commit is contained in:
ayeuhugyu 2023-09-09 14:20:07 -07:00
commit 18c5085262
20 changed files with 2762 additions and 0 deletions

5
.gitignore vendored Normal file
View file

@ -0,0 +1,5 @@
.env
src/logs
node_modules/
TheBubbles/
src/commands/cbrowser.js

1733
package-lock.json generated Normal file

File diff suppressed because it is too large Load diff

19
package.json Normal file
View 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
View 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
View 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"
);
}
},
};

View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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⃣

View file

@ -0,0 +1 @@
module.exports = () => /🅰|🅱|🅾|🅿|🈂|🈷|🌡|🌤|🌥|🌦|🌧|🌨|🌩|🌪|🌫|🌬|🌶|🍽|🎖|🎗|🎙|🎚|🎛|🎞|🎟|🏍|🏎|🏔|🏕|🏖|🏗|🏘|🏙|🏚|🏛|🏜|🏝|🏞|🏟|🏳|🏵|🏷|🐿|👁🗨|👁|📽|🕉|🕊|🕯|🕰|🕳|🕶|🕷|🕸|🕹|🖇|🖊|🖋|🖌|🖍|🖥|🖨|🖱|🖲|🖼|🗂|🗃|🗄|🗑|🗒|🗓|🗜|🗝|🗞|🗡|🗣|🗨|🗯|🗳|🗺|🛋|🛍|🛎|🛏|🛠|🛡|🛢|🛣|🛤|🛥|🛩|🛰|🛳||||||||||||#||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\*||||0|||1|2|||3|4|5|6|7|8|9/g;