Migrate PingableRoles to new Plugin structure

This commit is contained in:
Dark 2020-07-21 23:11:05 +02:00
parent f324dfc227
commit ed344be4b5
9 changed files with 232 additions and 0 deletions

View file

@ -0,0 +1,47 @@
import { pingableRolesEvt } from "../types";
import { getPingableRolesForChannel } from "../utils/getPingableRolesForChannel";
import { enablePingableRoles } from "../utils/enablePingableRoles";
import { disablePingableRoles } from "../utils/disablePingableRoles";
const TIMEOUT = 10 * 1000;
export const TypingEnablePingableEvt = pingableRolesEvt({
event: "typingStart",
async listener(meta) {
const pluginData = meta.pluginData;
const channel = meta.args.channel;
const pingableRoles = await getPingableRolesForChannel(pluginData, channel.id);
if (pingableRoles.length === 0) return;
if (pluginData.state.timeouts.has(channel.id)) {
clearTimeout(pluginData.state.timeouts.get(channel.id));
}
enablePingableRoles(pluginData, pingableRoles);
const timeout = setTimeout(() => {
disablePingableRoles(pluginData, pingableRoles);
}, TIMEOUT);
pluginData.state.timeouts.set(channel.id, timeout);
},
});
export const MessageCreateDisablePingableEvt = pingableRolesEvt({
event: "messageCreate",
async listener(meta) {
const pluginData = meta.pluginData;
const msg = meta.args.message;
const pingableRoles = await getPingableRolesForChannel(pluginData, msg.channel.id);
if (pingableRoles.length === 0) return;
if (pluginData.state.timeouts.has(msg.channel.id)) {
clearTimeout(pluginData.state.timeouts.get(msg.channel.id));
}
disablePingableRoles(pluginData, pingableRoles);
},
});