TwitchIO 机器人无阻塞

问题描述 投票:0回答:2

我想使用 TwitchIO 与另一个程序中的 Twitch 聊天进行对话,而不需要使用 Bot 的 run() 劫持主循环。

此处的官方文档(https://twitchio.readthedocs.io/en/latest/quickstart.html)显示了正在运行的代码,如下所示:

from twitchio.ext import commands


class Bot(commands.Bot):

    def __init__(self):
        # Initialise our Bot with our access token, prefix and a list of channels to join on boot...
        # prefix can be a callable, which returns a list of strings or a string...
        # initial_channels can also be a callable which returns a list of strings...
        super().__init__(token='ACCESS_TOKEN', prefix='?', initial_channels=['...'])

    async def event_ready(self):
        # Notify us when everything is ready!
        # We are logged in and ready to chat and use commands...
        print(f'Logged in as | {self.nick}')

    @commands.command()
    async def hello(self, ctx: commands.Context):
        # Here we have a command hello, we can invoke our command with our prefix and command name
        # e.g ?hello
        # We can also give our commands aliases (different names) to invoke with.

        # Send a hello back!
        # Sending a reply back to the channel is easy... Below is an example.
        await ctx.send(f'Hello {ctx.author.name}!')


bot = Bot()
bot.run()
# bot.run() is blocking and will stop execution of any below code here until stopped or closed.

但正如最后一行所说,run() 将阻止执行。

还有其他不阻塞的运行方式吗?像(编造的)之类的东西

bot.poll()

这需要在我的程序的主循环中定期运行?

python twitch twitch-api
2个回答
0
投票

您是否添加了更多使用 Bot 类的代码?如果没有,我建议只进行 2 个过程。

最简单的方法就是创建 2 个 python 文件并同时运行它们。

如果您确实必须在同一个程序上运行它们,我会考虑并行处理。下次您发布问题时,我建议将“其他程序”代码放入问题中,这样人们就不必做出这些假设。

#ps 如果您需要在同一个程序中运行它们,请编辑您的问题以显示您需要一起运行的代码,我会再看一下


0
投票

在这种情况下,您希望使用

start()
而不是
run()

© www.soinside.com 2019 - 2024. All rights reserved.