Compare commits
3 Commits
41ae943913
...
cd374090f2
Author | SHA1 | Date |
---|---|---|
Ceda EI | cd374090f2 | |
Sphericalkat | 8274ab0980 | |
Ceda EI | 80a0dbd2d3 |
|
@ -13,4 +13,6 @@ roleplay gifs. Once you have an instance of Ugoki (and optionally
|
||||||
- `export BOT_API_KEY="your-token-for-bot"`
|
- `export BOT_API_KEY="your-token-for-bot"`
|
||||||
- `export FEEDBACK_ID="chat-id-where-feedback-is-forwarded-to"`
|
- `export FEEDBACK_ID="chat-id-where-feedback-is-forwarded-to"`
|
||||||
- `export UGOKI_ROOT="https://root.of.ugoki.api/server/"`
|
- `export UGOKI_ROOT="https://root.of.ugoki.api/server/"`
|
||||||
|
- `export RATE_TIMEFRAME=5000 # rate limit time interval in milliseconds`
|
||||||
|
- `export RATE_LIMIT=5 # number of requests allowed in the timeframe`
|
||||||
- `npm start`
|
- `npm start`
|
||||||
|
|
10
bot.js
10
bot.js
|
@ -1,12 +1,20 @@
|
||||||
const { Telegraf } = require("telegraf");
|
const { Telegraf } = require("telegraf");
|
||||||
const { BOT_API_KEY, FEEDBACK_ID, UGOKI_ROOT } = process.env;
|
const { BOT_API_KEY, FEEDBACK_ID, UGOKI_ROOT, RATE_TIMEFRAME, RATE_LIMIT } = process.env;
|
||||||
const fs = require("fs").promises;
|
const fs = require("fs").promises;
|
||||||
const commands = require("./commands");
|
const commands = require("./commands");
|
||||||
const axios = require("axios");
|
const axios = require("axios");
|
||||||
const roleplay = require("./static/roleplay.json");
|
const roleplay = require("./static/roleplay.json");
|
||||||
|
const { limit } = require("@grammyjs/ratelimiter");
|
||||||
|
|
||||||
const bot = new Telegraf(BOT_API_KEY);
|
const bot = new Telegraf(BOT_API_KEY);
|
||||||
bot.catch((err) => console.log(err));
|
bot.catch((err) => console.log(err));
|
||||||
|
bot.use(limit({
|
||||||
|
// default config: 5 messages per 5 seconds
|
||||||
|
timeFrame: RATE_TIMEFRAME ?? 5000,
|
||||||
|
limit: RATE_LIMIT ?? 5,
|
||||||
|
|
||||||
|
onLimitExceeded: (ctx, next) => ctx.reply('Too many requests!'),
|
||||||
|
}))
|
||||||
|
|
||||||
const data = [
|
const data = [
|
||||||
"questions",
|
"questions",
|
||||||
|
|
|
@ -21,7 +21,7 @@ module.exports = (bot, [ questions, kys, insults, commands_list, words, roleplay
|
||||||
.then(bot_user => {
|
.then(bot_user => {
|
||||||
|
|
||||||
const default_text = (command, text) => `Do you want to ${text} `
|
const default_text = (command, text) => `Do you want to ${text} `
|
||||||
+ `yourself?\nIf no, reply to someone with /${command} to kill`
|
+ `yourself?\nIf no, reply to someone with /${command} to ${command}`
|
||||||
+ ` them or run /${command} username/name.\nYou can suggest `
|
+ ` them or run /${command} username/name.\nYou can suggest `
|
||||||
+ `more /${command} replies using /feedback`;
|
+ `more /${command} replies using /feedback`;
|
||||||
|
|
||||||
|
|
|
@ -38,7 +38,7 @@ module.exports = (forms, getGif) => (ctx) => {
|
||||||
reply = forms.none
|
reply = forms.none
|
||||||
.replace("{}", user);
|
.replace("{}", user);
|
||||||
|
|
||||||
getGif()
|
return getGif()
|
||||||
.then(gif => ctx.replyWithAnimation(gif.data.url, {caption: reply}));
|
.then(gif => ctx.replyWithAnimation(gif.data.url, {caption: reply}));
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -9,12 +9,18 @@
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"license": "GPL-3.0",
|
"license": "GPL-3.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@grammyjs/ratelimiter": "^1.2.0",
|
||||||
"axios": "^0.21.0",
|
"axios": "^0.21.0",
|
||||||
"fluent-ffmpeg": "^2.1.2",
|
"fluent-ffmpeg": "^2.1.2",
|
||||||
"form-data": "^4.0.0",
|
"form-data": "^4.0.0",
|
||||||
"telegraf": "^4.15.3"
|
"telegraf": "^4.15.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@grammyjs/ratelimiter": {
|
||||||
|
"version": "1.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@grammyjs/ratelimiter/-/ratelimiter-1.2.0.tgz",
|
||||||
|
"integrity": "sha512-xBkH/ATJsuv5JgVYX9yQM9DNg75Qqjw+gh82lVsBn4j+d0DkxxC+kuy6WFoB96Cb6oifQfaBJL8CTikdYG4v0A=="
|
||||||
|
},
|
||||||
"node_modules/@telegraf/types": {
|
"node_modules/@telegraf/types": {
|
||||||
"version": "6.9.1",
|
"version": "6.9.1",
|
||||||
"resolved": "https://registry.npmjs.org/@telegraf/types/-/types-6.9.1.tgz",
|
"resolved": "https://registry.npmjs.org/@telegraf/types/-/types-6.9.1.tgz",
|
||||||
|
@ -288,6 +294,11 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@grammyjs/ratelimiter": {
|
||||||
|
"version": "1.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@grammyjs/ratelimiter/-/ratelimiter-1.2.0.tgz",
|
||||||
|
"integrity": "sha512-xBkH/ATJsuv5JgVYX9yQM9DNg75Qqjw+gh82lVsBn4j+d0DkxxC+kuy6WFoB96Cb6oifQfaBJL8CTikdYG4v0A=="
|
||||||
|
},
|
||||||
"@telegraf/types": {
|
"@telegraf/types": {
|
||||||
"version": "6.9.1",
|
"version": "6.9.1",
|
||||||
"resolved": "https://registry.npmjs.org/@telegraf/types/-/types-6.9.1.tgz",
|
"resolved": "https://registry.npmjs.org/@telegraf/types/-/types-6.9.1.tgz",
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
},
|
},
|
||||||
"homepage": "https://gitlab.com/ceda_ei/Quadnite-Bot#readme",
|
"homepage": "https://gitlab.com/ceda_ei/Quadnite-Bot#readme",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@grammyjs/ratelimiter": "^1.2.0",
|
||||||
"axios": "^0.21.0",
|
"axios": "^0.21.0",
|
||||||
"fluent-ffmpeg": "^2.1.2",
|
"fluent-ffmpeg": "^2.1.2",
|
||||||
"form-data": "^4.0.0",
|
"form-data": "^4.0.0",
|
||||||
|
|
Loading…
Reference in New Issue