57 lines
1.2 KiB
JavaScript
57 lines
1.2 KiB
JavaScript
/*
|
|
Simple flood protection plugin.
|
|
Note: Received Telegram message time accuracy is one second.
|
|
*/
|
|
|
|
const userList = {};
|
|
|
|
// Export bot module
|
|
module.exports = {
|
|
|
|
id: 'floodProtection',
|
|
defaultConfig: {
|
|
interval: 1,
|
|
message: 'Too many messages, relax!'
|
|
},
|
|
|
|
plugin(bot, pluginConfig) {
|
|
|
|
const interval = Number(pluginConfig.interval) || 1;
|
|
const text = pluginConfig.message;
|
|
|
|
bot.mod('message', (data) => {
|
|
|
|
const msg = data.message;
|
|
const id = msg.from.id;
|
|
const user = userList[id];
|
|
const now = new Date(msg.date);
|
|
|
|
if (user) {
|
|
|
|
const diff = now - user.lastTime;
|
|
user.lastTime = now;
|
|
|
|
if (diff <= interval) {
|
|
|
|
if (!user.flood) {
|
|
if (text) bot.sendMessage(id, text);
|
|
user.flood = true;
|
|
}
|
|
|
|
data.message = {};
|
|
|
|
} else {
|
|
user.flood = false;
|
|
}
|
|
|
|
} else {
|
|
userList[id] = {lastTime: now};
|
|
}
|
|
|
|
return data;
|
|
|
|
});
|
|
|
|
}
|
|
};
|