Подскажите c telegram bot (python-telegram-bot) python
Создал бота используя фреймворк python-telegram-bot
Пишем в чат /start отвечает "Hi!", все работает
from telegram.ext import Updater, RegexHandler
from telegram.ext import CommandHandler
from telegram.ext import MessageHandler, Filters
TOKEN = '123'
REQUEST_KWARGS={
# "USERNAME:PASSWORD@" is optional, if you need authentication:
'proxy_url': 'http://123:123@123:65233/',
}
def start(update, context):
context.bot.send_message(chat_id=update.effective_chat.id, text="Hi!")
if __name__ == '__main__':
updater = Updater(token=TOKEN, request_kwargs=REQUEST_KWARGS, use_context=True)
dispatcher = updater.dispatcher
start_handler = CommandHandler('start', start)
dispatcher.add_handler(start_handler)
updater.start_polling()
Как отправить сообщение в чат, без /start? просто допустим каждые 5 секунд отправлять произвольное сообщение?
Ответы (1 шт):
Автор решения: JopaBoga
→ Ссылка
Сам решил, может кому пригодится. По сути передаем updater и context в поток и выполняем нужные вычисления и шлем результат
main.py
from telegram.ext import Updater, RegexHandler
from telegram.ext import CommandHandler
from telegram.ext import MessageHandler, Filters
from thread_class import *
TOKEN = 'xxx'
REQUEST_KWARGS={'proxy_url': 'http://xxx',}
def start(update, context):
#выполняем то что связано с запуском
thread.bot_updater(update, context)
if __name__ == '__main__':
# запускаем поток
thread = ThreadData()
thread.start()
# запускаем бота телеграм
updater = Updater(token=TOKEN, request_kwargs=REQUEST_KWARGS, use_context=True)
dispatcher = updater.dispatcher
start_handler = CommandHandler('start', start)
dispatcher.add_handler(start_handler)
updater.start_polling()
class_thread.py
#поток связанный с ботом
import threading
from time import sleep
class ThreadData(threading.Thread):
"""StartTrade"""
def __init__(self):
threading.Thread.__init__(self)
self.go = False
self.update = None
self.context = None
def run(self):
self.start_thread()
def start_thread(self):
while True:
if self.go:
text = 'ЭТО СООБЩЕНИЕ КАЖДЫЕ 5 СЕКУНД'
self.context.bot.send_message(chat_id=self.update.effective_chat.id, text=text)
sleep(5)
def bot_updater(self, update, context):
self.update = update
self.context = context
self.go = True