3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-05-22 17:25:01 +00:00
zeppelin/backend/src/plugins/PingableRoles/events/ChangePingableEvts.ts

47 lines
1.4 KiB
TypeScript

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: "message",
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);
},
});