mirror of
https://github.com/ZeppelinBot/Zeppelin.git
synced 2025-05-22 17:25:01 +00:00
47 lines
1.4 KiB
TypeScript
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);
|
|
},
|
|
});
|