Боты в Телеграмме долго грузятся

Бот Telegram — JS — Бот перестает работать через некоторое время

  • Post author: admin
  • Запись опубликована: 5 ноября, 2022
  • Post category: Вопросы по программированию

#node.js #heroku #telegram #telegram-bot

#node.js #heroku #telegram #telegram-бот

Вопрос:

Разработчики! Я создал простого бота для Telegram, используя язык JS, который при вводе «/ tutorials» загружается текстовый список.

Я развернул этого бота в Heroku, чтобы он вышел в Интернет.

Проблема в том, что бот работает некоторое время, а затем перестает работать, я не знаю почему.

У кого-нибудь была эта проблема?

//Correction message error on console process.env.NTBA_FIX_319 = 1; var express = require(‘express’); var app = express(); app.set(‘port’, (process.env.PORT || 5000)); const TelegramBot = require(‘node-telegram-bot-api’) const TOKEN = ‘myToken’ const bot = new TelegramBot(TOKEN, < polling: true >) bot.on(‘message’, (msg) => < const chatId = msg.chat.id; const text = msg.text; //read list txt var fs = require(‘fs’); try < var data = fs.readFileSync(‘lista.txt’, ‘utf8’); > catch (e) < console.log(‘Error:’, e.stack); > //send message if (text.includes(‘/tutoriais’)) < bot.sendMessage(chatId, `Olá, $ ! nLista de Tutoriais`) bot.sendMessage(chatId, data); > >);

Ответ №1:

Я добавил webhook в файл python, и в итоге он работал нормально

Источник: programbox.ru

Telegram Bot слишком долго нажимает кнопку Inline

Я сделал бота, который должен нажимать на встроенные кнопки. Моя проблема в том, что одно нажатие на кнопки занимает целых 15 секунд. Как можно ускорить этот процесс?

from telethon.sync import TelegramClient from telethon import functions, types from telethon import TelegramClient, sync import time AllLogs = open(‘logs.txt’) for logs in AllLogs: api_id, api_hash = logs.split(‘;’) client = TelegramClient(f’session_’, api_id, api_hash) client.start() messages = client.get_messages(int(ChannelId), ids=int(MessageId)) start_time1 = time.time() messages.click(0) print(«— %s seconds —» % (time.time() — start_time1)) client.disconnect()
Leo 21 Янв 2022 в 06:54

Еще по теме:  Как получить деньги за просмотры в тик токе через Телеграмм

1 ответ

Лучший ответ

Вы не можете ускорить этот процесс. Метод click отправляет запрос в Telegram, который затем отправляет обновление боту. Бот должен ответить на обновление в Telegram, который затем «перенаправит» результат обратно на ваш первоначальный клик.

По сути клик должен ждать, пока бот ответит на запрос, и если он не ответит на него достаточно быстро, то будет медленно. Возможно, бота нужно исправить, чтобы он отвечал быстрее (или вообще; если он не отвечает, время ожидания Telegram истекает, и клик возвращает None ).

Что вы можете сделать, так это создать новую задачу asyncio для запуска щелчка «в фоновом режиме», однако это не очень хорошая практика, так как всегда следует await все созданные задачи , и если код зависит от ответа бота, вам придется дождаться его так или иначе. Я не рекомендую этот подход, но технически он «работает».

import asyncio . asyncio.create_task(messages.click(0))

Источник: question-it.com

H Отладка бота Telegram на localhost в черновиках

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

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

Под катом Вы найдете ссылку на код, написанный на PHP, но описывать я буду только алгоритм действий, не приводя самого кода.

Проект можно найти на GitHub. Файлы проекта необходимо скопировать себе на сервер, а подключается отладчик к коду бота всего одной строчкой:

include_once( «telegramDebug/debug.inc» );

Еще по теме:  Не работает кнопка участвовать в Телеграмме

Этот код должен быть указан до начала любой деятельности самого бота. Лучше всего самой первой строкой веб-хука. В файле index.html необходимо указать локальный путь до веб-хука.

На чём основан принцип отладки

Когда сервер Telegram присылает обновление, то ему совершенно не интересно, что вернет ему веб-хук, потому что для любой операции (отправка сообщения пользователю и т.п.) веб-хук должен сделать запрос к API Telegram. Это очень сильно помогает, потому что в таком случае запрос к API может выполнять не веб-сервер, а рабочая машина, на которой ведется разработка бота. Нужно только заставить рабочую машину сделать этот самый запрос к API, вместо веб-сервера и в отличие от Telegram нам будет очень интересно что вернет веб-хук, потому что он может вернуть предупреждение или сообщение об ошибке, которые помогут отлаживать бота.

Алгоритм работы отладчика

  1. Получаем сообщение от сервера Telegram прежде самого бота.
  2. Если для чата из которого получено сообщение включена отладка, то помещаем сообщение в очередь на отправку на рабочую машину и прекращаем работу веб-хука.
  3. Открытая в браузере вкладка используя long-pooling получает от отладчика сообщение, ранее помещенное в очередь, и перенаправляет его веб-хуку, который расположен на локальной машине.
  4. Локальный веб-хук будет обрабатывать это сообщение точно так же, как он бы сделал это находясь на боевом сервере, никаких специальных изменений в код не требуется.

Алгоритм действий для включения отладки

1. Открываем в браузере адрес веб-хука по протоколу http (не https), добавив к нему адресу параметр debug=manage в результате увидим страницу (может меняться со временем в лучшую сторону):

2. Если не знаем свой ID, то просто пишем что-нибудь боту в Telegram:

Еще по теме:  Запретные детские Телеграм каналы

3. Включаем режим отладки, указав конкретные ID, разделенные ; , для которых этот режим будет работать. Таким образом пользователи бота будут продолжать получать сообщения от «боевой» версии бота, а мы от разрабатываемой версии.

4. Пишем боту в Telegram, отлаживаем код бота не затрагивая при этом «боевой» сервер. Пусть всё прошло без ошибок, тогда видим:

5. Попробуем в коде бота на рабочей машине вызвать несуществующую функцию create_message_help :

Если Вам это пригодится, но хотелось бы что-то улучшить- приглашаю присоединиться к проекту на ГитХаб.

Источник: sohabr.net

Рейтинг
( Пока оценок нет )
Загрузка ...