Fixed bot admin handling + modified README

This commit is contained in:
A Bunch of Computer Nerds 2024-12-08 21:47:32 -03:00
parent 9944b67edd
commit 33f76fd806
4 changed files with 16 additions and 19 deletions

View File

@ -23,27 +23,19 @@ And now, init the submodules with these commands (this is very important):
cd lynx cd lynx
git submodule update --init --recursive git submodule update --init --recursive
``` ```
Next, inside the repository directory, go to props folder and create a `config.json` file with the following content: Next, inside the repository directory, create a `config.env` file with some content, which you can see the [example .env file](config.env.example) to fill info with. To see the meaning of each one, see [the Functions section](#configenv-functions).
```
{
"botToken": "0000000000:AAAaaAAaaaaAaAaaAAAaaaAaaaaAAAAAaaa",
"admins": [0000000000, 1111111111, 2222222222],
"lastKey": "0000a000a0000aaa0a00a0aaa0a000000",
"lastSecret": "0000a000a0a0000aa0000aa00000000a",
"weatherKey": "0000a000a0000aaa0a00a0aaa0a000000"
}
```
- **botToken**: Put your bot token that you created at [@BotFather](https://t.me/botfather), as the example above.
- **admins**: Put the ID of the people responsible for managing the bot (as the example above). They can use some administrative + exclusive commands on any group.
- **lastKey**: Last.fm API key, for use on `lastfm.js` functions, like see who is listening to what song and etc.
- **lastSecret**: Last.fm API secret (optional), which has the "same" purpose as the API key above.
- **weatherKey**: Weather.com API key, used for the `/weather` command
After editing the file, save all changes and run the bot with ``npm start``. After editing the file, save all changes and run the bot with ``npm start``.
- To deal with dependencies, just run ``npm install .`` or ``npm i .`` at any moment to install any of them. - To deal with dependencies, just run ``npm install`` or ``npm i`` at any moment to install all of them.
## config.env Functions
- **botToken**: Put your bot token that you created at [@BotFather](https://t.me/botfather), as the example above.
- **botAdmins**: Put the ID of the people responsible for managing the bot (as the example above). They can use some administrative + exclusive commands on any group.
- **lastKey**: Last.fm API key, for use on `lastfm.js` functions, like see who is listening to what song and etc.
- **weatherKey**: Weather.com API key, used for the `/weather` command.
## Note ## Note
- Take care of your ``config.json`` file, as it is so much important and needs to be secret (like your passwords), as anyone can do whatever they want to the bot with this token! - Take care of your ``config.env`` file, as it is so much important and needs to be secret (like your passwords), as anyone can do whatever they want to the bot with this token!
## About/License ## About/License
BSD-3-Clause - 2024 Lucas Gabriel (lucmsilva). BSD-3-Clause - 2024 Lucas Gabriel (lucmsilva).

4
config.env.example Normal file
View File

@ -0,0 +1,4 @@
botToken = "InsertYourBotTokenHere"
botAdmins = 0000000000, 00000000, 00000000
lastKey = "InsertYourLastFmApiKeyHere"
weatherKey = "InsertYourWeatherDotComApiKeyHere"

View File

@ -9,7 +9,7 @@ async function collectInfo(ctx) {
const userId = parseInt(ctx.message.text.split(' ')[1], 10); const userId = parseInt(ctx.message.text.split(' ')[1], 10);
const admins = await ctx.telegram.getChatAdministrators(chatId); const admins = await ctx.telegram.getChatAdministrators(chatId);
const isAdmin = admins.some(admin => admin.user.id === adminId); const isAdmin = admins.some(admin => admin.user.id === adminId);
const onCrew = process.env.botAdmins.includes(adminId); const onCrew = JSON.parse("[" + process.env.botAdmins + "]");
return { Strings, chatId, userId, isAdmin, onCrew }; return { Strings, chatId, userId, isAdmin, onCrew };
} }

View File

@ -53,7 +53,8 @@ function getSystemInfo() {
async function handleAdminCommand(ctx, action, successMessage, errorMessage) { async function handleAdminCommand(ctx, action, successMessage, errorMessage) {
const Strings = getStrings(ctx.from.language_code); const Strings = getStrings(ctx.from.language_code);
const userId = ctx.from.id; const userId = ctx.from.id;
if (process.env.botAdmins.includes(userId)) { const adminArray = JSON.parse("[" + process.env.botAdmins + "]");
if (adminArray.includes(userId)) {
try { try {
await action(); await action();
ctx.reply(successMessage, { ctx.reply(successMessage, {