A rip-off from the discord bot NQN, it allows non-nitro users to send animated emoji or emoji from different servers. It uses webhooks to do so. Uses - just type out the emoji within colons and send the message, Eg: :hello:
const lib = require('lib')({token: process.env.STDLIB_SECRET_TOKEN});
let message = context.params.event.content;
let emojis = message.match(/(?<=:)([^:\s]+)(?=:)/g);
if (!emojis) return;
let guilds = await lib.discord.guilds['@0.1.0'].list({
limit: 200,
});
let all_emojis = await lib.discord.guilds['@0.1.0'].emojis.list({
guild_id: guilds[0].id,
});
for (let i = 1; i < guilds.length; i++) {
let guild_emojis = await lib.discord.guilds['@0.1.0'].emojis.list({
guild_id: guilds[i].id,
});
all_emojis = all_emojis.concat(guild_emojis);
}
emojis.forEach((e) => {
let emoji = all_emojis.find((E) => E.name === e);
if (!emoji) return;
emoji = `<${emoji.animated ? 'a' : ''}:${emoji.name}:${emoji.id}>`;
if (new RegExp(emoji, 'g').test(message)) {
message = message.replace(new RegExp(emoji, 'g'), emoji);
} else message = message.replace(new RegExp(':' + e + ':', 'g'), emoji);
});
if (message === context.params.event.content) return;
await lib.discord.channels['@0.3.0'].messages.destroy({
message_id: context.params.event.id,
channel_id: context.params.event.channel_id,
});
let webhooks = await lib.discord.webhooks['@0.1.0'].list({
channel_id: context.params.event.channel_id,
});
let bot = await lib.discord.users['@0.1.5'].me.list();
let webhook = webhooks.filter((w) => w.user.id === bot.id);
if (webhook.length) {
await lib.discord.webhooks['@0.1.0'].execute({
webhook_id: webhook[0].id,
webhook_token: webhook[0].token,
content: `${message}`,
username: `${context.params.event.author.username}`,
avatar_url: context.params.event.author.avatar
? `https://cdn.discordapp.com/avatars/${context.params.event.author.id}/${context.params.event.author.avatar}.png`
: 'https://discordapp.com/assets/6debd47ed13483642cf09e832ed0bc1b.png',
});
} else {
webhook = await lib.discord.webhooks['@0.1.0'].create({
channel_id: context.params.event.channel_id,
name: `${bot.username}'s webhook`,
});
await lib.discord.webhooks['@0.1.0'].execute({
webhook_id: webhook.id,
webhook_token: webhook.token,
content: `${message}`,
username: `${context.params.event.author.username}`,
avatar_url: context.params.event.author.avatar
? `https://cdn.discordapp.com/avatars/${context.params.event.author.id}/${context.params.event.author.avatar}.png`
: 'https://discordapp.com/assets/6debd47ed13483642cf09e832ed0bc1b.png',
});
}