Я создаю бот-телеграмму, используя telepot (python), и произошла странная вещь:
, поскольку бот должен продолжать работать, я установил
while 1:
time.sleep(.3)
в конце моего бота, сразу после того, как я определю, как обрабатывать MessageLoop.
У бота есть print()
, чтобы утверждать, что бот настраивается (или, что лучше, настраивает обработчик сообщений) и что он читает чат, ожидая ввода.
Проблема в том, что если я запустил код без
while 1:
time.sleep(.3)
он печатает сообщения и останавливает выполнение (не имея цикла для ожидания нового ввода), но если я добавлю while 1: (...)
, код останавливается, прежде чем можно будет что-либо напечатать.
Вот код:
"""Launch the bot."""
import json
import telepot
from telepot.loop import MessageLoop
import time
from base import splitter
from base import handler
messageHandler = handler.Handler()
with open('triggers.json') as f:
triggers = json.load(f)
with open('config.json') as f:
config = json.load(f)
botKey = config['BOT_KEY']
# define the bot and the botname
bot = telepot.Bot(botKey)
botName = bot.getMe()['username']
# split commands in arrays ordered by priority
configSplitter = splitter.Splitter()
triggers = configSplitter.splitByPriority(triggers)
# define the handler
messageHandler.setBotname(botName)
messageHandler.setMessages(triggers)
# handle the messageLoop
print("setting up the bot...")
MessageLoop(bot, messageHandler.handle).run_as_thread()
print("Multibot is listening!")
# loop to catch all the messages
while 1:
time.sleep(.3)
Версия Python: 3,6 32-битная