当前位置: 首页 > 面试题库 >

使不和谐的机器人每10秒更改播放状态

臧欣怿
2023-03-14
问题内容

我正在尝试使测试不一致机器人的状态每10秒在两条消息之间切换一次。当状态消息更改时,我需要执行脚本的其余部分,但是每当我尝试使其正常工作时,都会弹出错误。我的脚本中有线程,但是我不确定在这种情况下如何使用它。

@test_bot.event
async def on_ready():
    print('Logged in as')
    print(test_bot.user.name)
    print(test_bot.user.id)
    print('------')
    await change_playing()


@test_bot.event
async def change_playing():
    threading.Timer(10, change_playing).start()
    await test_bot.change_presence(game=discord.Game(name='Currently on ' + str(len(test_bot.servers)) +
                                                          ' servers'))
    threading.Timer(10, change_playing).start()
    await test_bot.change_presence(game=discord.Game(name='Say test.help'))

错误消息显示为:

C:\Python\Python36-32\lib\threading.py:1182: RuntimeWarning: coroutine 'change_playing' was never awaited
  self.function(*self.args, **self.kwargs)

问题答案:

不幸的是,线程和异步并不完美地结合在一起。您需要跳过额外的箍,以等待线程内的协程。最简单的html" target="_blank">解决方案是不使用线程。

您要尝试的是等待一段时间,然后运行协程。这可以通过后台任务来完成(示例)

async def status_task():
    while True:
        await test_bot.change_presence(...)
        await asyncio.sleep(10)
        await test_bot.change_presence(...)
        await asyncio.sleep(10)

@test_bot.event
async def on_ready():
    ...
    bot.loop.create_task(status_task())

您不能使用time.sleep(),因为这会阻止机器人的执行。asyncio.sleep()就像其他程序一样是协程,因此是非阻塞的。

最后,@client.event装饰器仅应在机器人识别为事件的功能上使用。如on_ready和on_message。



 类似资料:
  • 我已经创建了一个bot,它现在在我的discord服务器中,使用下面的代码。 我的问题是,一旦我在与bot不和谐的聊天中,我如何调用命令让bot运行代码,为用户列表收集csv?我不确定如何调用机器人,一旦它在聊天/服务器中获得列表。

  • 我使用repl。它让我的不和机器人。我使用Python并遵循本教程: https://www.youtube.com/watch?v=SPTfmiYiuok 这是我的代码:

  • 问题内容: 我正在使用Python处理User Discord Bot。如果机器人所有者键入内容,则该机器人将DM所有者提到的用户。 问题答案: 最简单的方法是使用扩展程序。在这里,我们使用转换器来获取目标用户,并使用仅关键字参数作为可选消息来发送目标用户: 对于discord.py的较新的1.0+版本,应使用而不是

  • 当我在discord内部运行以下脚本(“cmd中的node musicbot.js”)和“!play ytlink”时,bot加入语音通道,并在控制台中记录命令和链接。然而,音乐并没有开始播放。我安装了ffmpeg、ytdl核心和discord。js。 有人能帮我吗?我不知道是哪一部分搞砸了。

  • 你好,我有一个问题,我需要在红色的一些行的jtabl得到刷新每10秒。另外,要更改颜色的行集。我更新要更改为读取的行集,然后只要找到这些行,我就需要更改表中的行。我试过表格的单元格渲染器,但不能。如果任何人可以提出一些东西,我是开放的一切,希望得到一些代码作为例子。任何这样做的方式都是受欢迎的。我试着用这个函数玩W,但我不能添加要更改的行集…'''

  • 我正在尝试使用discord删除已创建的角色,该角色使用的是。js。 终端中的错误显示: DiscordAPIError:缺少权限 虽然我已经给了我的机器人所有权限。 代码: