Иконка ресурса

Simple TG bot 2023-12-15

Нет прав для скачивания
Сообщения
316
Реакции
131
Помог
4 раз(а)
alabamaster1337 добавил(а) новый ресурс:

Simple TG bot - Простецкий бот на nodejs

Показывает минимальную инфу о сервере и список игроков.
Если отправить боту команду, ответит забавным сообщением.
Если процитировать бота, отправить смайл idk
Посмотреть вложение 40063
Узнать больше об этом ресурсе...
 
Сообщения
285
Реакции
251
Помог
7 раз(а)
Добрый день. Я бы статус сервера оформил более плотно информацией, название, карта, игроки, можно как вариант, вывод на дефолт папку или ссылку откуда будут браться картинки карты. Список игроков выводил бы отдельной командой, либо под статусом сервера сделал кнопку, которая вызывала бы список игроков.

На скрине ниже можно увидеть наполнение. Ну естественно сделать это с отступами.
 

Вложения

Сообщения
316
Реакции
131
Помог
4 раз(а)
Jumper, с кнопкой лень делать) а как выглядит с отступами мне не нравится))
1702640246565.png
JavaScript:
case '.сервер':
    if (!IS_READY) {
        return bot.sendMessage(msg.chat.id, 'Подожди пару минут ...')
    }
    
    
const server = await Gamedig.query({
    type: SERVER_TYPE,
    host: SERVER_IP,
    port: SERVER_PORT
})

    const gametrackerMapLink = `https://image.gametracker.com/images/maps/160x120/cs/${server.map}.jpg`

    let mess = `🔫 ${server.name}\n`
    mess += `ℹ️ Карта ${server.map}\n`
    mess += `🕹 Игроков ${server.raw.numplayers}/${server.maxplayers}\n`
    mess += `▶️ ${server.connect}\n\n`
    
    server.players.forEach(pl => {
        mess += `🎮 ${pl.name} | фраги ${pl.raw.score} \n`
    })

    try {
        bot.sendPhoto(msg.chat.id, gametrackerMapLink, { caption: mess })
    } catch (error) {
        if (error.response.body.error_code === 400) {
            return bot.sendMessage(msg.chat.id, mess)
        }

        console.log('catch error:', error);
        bot.sendMessage(msg.chat.id, 'Возникла проблема, попробуй позже ¯\_(ツ)_/¯')
    } finally {
        IS_READY = false
    }
break;
1702640284005.png

JavaScript:
const server = await Gamedig.query({
      type: SERVER_TYPE,
      host: SERVER_IP,
      port: SERVER_PORT
   })
   switch (msg.text) {
      case '.сервер':
         if (!IS_READY) {
            return bot.sendMessage(msg.chat.id, 'Подожди пару минут ...')
         }
         const gametrackerMapLink = `https://image.gametracker.com/images/maps/160x120/cs/${server.map}.jpg`
         let mess = `🔫 ${server.name}\n`
         mess += `ℹ️ Карта ${server.map}\n`
         mess += `🕹 Игроков ${server.raw.numplayers}/${server.maxplayers}\n`
         mess += `▶️ ${server.connect}\n`
         
         try {
            bot.sendPhoto(msg.chat.id, gametrackerMapLink, { caption: mess })
         } catch (error) {
            if (error.response.body.error_code === 400) {
               return bot.sendMessage(msg.chat.id, mess)
            }
            console.log('catch error:', error);
            bot.sendMessage(msg.chat.id, 'Возникла проблема, попробуй позже ¯\_(ツ)_/¯')
         } finally {
            IS_READY = false
         }
      break;
      case '.игроки':
         let messPlayers = `🎮 Сейчас играют \n\n`
         server.players.forEach((pl, idx) => {
            messPlayers += `${idx +1}) ${pl.name} | фраги ${pl.raw.score} \n`
         })
         try {
            bot.sendMessage(msg.chat.id, messPlayers)
         } catch (error) {
            console.log('catch error:', error);
            bot.sendMessage(msg.chat.id, 'Возникла проблема, попробуй позже ¯\_(ツ)_/¯')
         } finally {
            IS_READY = false
         }
      break;
   
      default:
      break;
   }
 
Сообщения
12
Реакции
2
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
А можно для тех ,кто не особо шарит в тонокстях как это запустить?
22 Дек 2023
Закинуть все на VDS/VPS, выполнить npm i
Запустить можно с помощью утилиты pm2
вот это что и где как сделать?
 
Сообщения
12
Реакции
2
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Разобрался как поставить node.js, все запустил, но бот не реагирует на команды. Что не так? Не шарю. поэтому пути все спрятал, может и не надо было))
1703317951987.png
 
Сообщения
316
Реакции
131
Помог
4 раз(а)
evgen_belov, посмотреть лог можно командой pm2 logs telegrambot, покажи что там
 
Сообщения
12
Реакции
2
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Сообщения
12
Реакции
2
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
alabamaster1337, выполнил установку npm в папке, где лежит файл app.js и перезапустил бота командой pm2 reload telegrambot
Все работает, спасибо огромное.
 
Сообщения
12
Реакции
2
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Код:
import Gamedig from "gamedig";

import TelegramBot from "node-telegram-bot-api";


// SERVER SETUP

// const SERVER_IP = "127.0.0.1";

// const SERVER_PORT = "27015";

const SERVER_TYPE = "cs16"; // counter-stike 1.6

const TRIGGER_MESSAGE = ".сервер"; // здесь можно задать команду на триггер сообщения

const BOT_ROKEN = "";


const SERVERS = {

    1: { ip: "62.122.215.174", port: "27015" }, // тут, соответственно, сервер + порт

    2: { ip: "46.174.52.5", port: "27283" },

    // 3: { ip: '', port: ''},

};


const bot = new TelegramBot(BOT_ROKEN, { polling: true });


let IS_READY = true;

setInterval(() => (IS_READY = true), 10000);


const ANSWERS = [

    "Ты недооцениваешь себя. Ты можешь ещё хуже! 💩",

    "Быть гением в нашем мире - тяжкое бремя. Хорошо, что {name} не обременён",

    "{name}, твой скрытый талант на столько прекрасен, что его нужно скрывать вечно",

    "{name}, у тебя есть талант, не верь никому, кто так говорит",

    "Когда один парень, борющийся за жизнь со смертельной болезнью, познакомился с {name}, он нашёл в себе силы прекратить борьбу...",

    "{name} один из немногих кто заслуживает унижения",

    "{name}, спасибо за счастливое детство. В детстве мы о тебе не знали))",

    "Всегда задавался вопросом, почему столько хейта в сторону {name}? Его должно быть в десятки раз больше!",

    "Если вы не считаете что {name} реальный кринж, то скорее всего вы {name}",

// можно дописать про бутылку и т.д., вставить свои сообщения, учитывая правила по этим

];


bot.on("message", async (msg) => {

    if (msg.left_chat_member || msg.new_chat_members) return;


    if (msg.reply_to_message && msg.reply_to_message.from.is_bot) {

        return bot.sendMessage(msg.chat.id, "🤷");

    }


    if (Array.isArray(msg.entities) && msg.entities.length && msg.entities[0].type === "bot_command") {

        const rand = Math.floor(Math.random() * ANSWERS.length);

        const kek_answer = ANSWERS[rand].replaceAll("{name}", msg.from.first_name || msg.from.username);


        return bot.sendMessage(msg.chat.id, kek_answer);

    }


    const serverInfo = Object.entries(SERVERS).find(([key, obj]) => msg.text === TRIGGER_MESSAGE + key); // msg.text === (.сервер1 | .сервер2 | ...)


    if (!serverInfo) return;


    // console.log("serverInfo:", serverInfo);


    if (msg.text)

        switch (msg.text) {

            case TRIGGER_MESSAGE + serverInfo[0]:

                if (!IS_READY) {

                    return bot.sendMessage(msg.chat.id, "Подожди пару минут ...");

                }


                try {

                    const server = await Gamedig.query({

                        type: SERVER_TYPE,

                        host: serverInfo[1].ip,

                        port: serverInfo[1].port,

                    });


                    let mess = `🔫 ${server.name} \n`;

                    mess += `ℹ️ ${server.map} | ${server.raw.numplayers}/${server.maxplayers} \n\n`;


                    server.players.forEach((pl) => {

                        mess += `🎮 ${pl.name} | фраги ${pl.raw.score} \n`;

                    });


                    bot.sendMessage(msg.chat.id, mess);


                    IS_READY = false;

                } catch (error) {

                    console.log("catch error:", error);

                    return bot.sendMessage(msg.chat.id, "Возникла проблема, попробуй позже ¯_(ツ)_/¯");

                }

                break;


            default:

                break;

        }

});

доработка от автора (некоторые комментарии вставил я, чтоб понятней было таким же тугодумам, как и я ))) )
таким образом можно добавить несколько серверов. К сожалению плюсануть не могу ввиду отсутствия груупы (

За бота жирный лайк ввиду его игнора ботов на сервере.
 
Сообщения
12
Реакции
2
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
HaPKOOZ, да, наверное. Но это точно не мой уровень)))
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу