我正在使用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位
答案 0 :(得分:0)
解决方案是在各种sys.stdout.flush()
之后添加print()
以恢复print()
的功能,而为了使代码再次工作,我必须更改电信功能
MessageLoop(bot, messageHandler.handle).run_as_thread()
没有正常工作:
bot.message_loop(messageHandler.handle)