当前位置: 首页 > 知识库问答 >
问题:

我可以让我的不和谐机器人向所有添加了机器人的服务器发送消息吗?

佘单鹗
2023-03-14

我有一个不和谐机器人,定期检查数据库中的一些数据,如果有更新,它会向通道输出一些内容。所以我设置了一个每小时运行一次的函数。

async def check_new():
    general_channel = bot.get_channel(channel_id)
    embed = discord.Embed(
        title="Update!",
        color=0xff0000,
        description=''
    )
    while True:
        change = check_change()
        if change:
            await general_channel.send(embed=embed)
        await asyncio.sleep(3600)

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

    bot.loop.create_task(check_new())

当机器人被添加到多个服务器时,问题就出现了,在这些服务器中,消息只被发送到特定的channel_id,因此消息只被发送到我的服务器通道。本质上,我只向我的渠道发送通知,我怎么能向每个拥有我的机器人的渠道发送通知,这可能吗?

共有1个答案

梁池暝
2023-03-14

你可以得到你的机器人所在的公会列表,有bot.guilds

   if change:
      guilds = bot.guilds()
      for guild in guilds:
         channels = guild.channels #get all channels
         for channel in channels: 
            try:
               await channel.send(embed=embed)
               break
            except:
               print('unable to send in', channel, guild)

虽然您可以这样做,而且工作正常,但我不建议您这样做,因为bot可能会以随机通道发送更新。我建议您要求用户设置一个bot updates频道,这样您就可以将其存储在数据库中并使用它发送更新。

  • 机器人。行会

 类似资料:
  • 我正在尝试制作一个机器人,每4小时发送一次自动消息,但由于某些原因,它无法工作。我查看了所有的google和stack overflow,但没有一个答案能帮助我。不和谐是否改变了机器人发送消息的方式? 如果我试图运行这个代码,它会给我这个错误 任何帮助将不胜感激并感谢您的时间

  • 请不要说“已经回答”,因为我尝试了一切,包括这里的所有相关帖子,显然,我正在阅读api文档。 完全错误为: 忽略on_ready Traceback(最近一次调用)中的异常:文件“/usr/local/lib/python3.8/dist packages/discord/client.py”,第312行,在on_ready wait channel中的事件wait coro(*args,**kw

  • 每次机器人被邀请到服务器时,我都想发送一条消息。然后它应该写这样的话:“你好,这是我的不和机器人” 到目前为止,我有这个代码,它不会产生错误,但也不会发送消息。

  • 我目前正在制作一个discord bot,并希望在服务器加入时在服务器的通道中发送一条消息,这是我到目前为止的代码。 当我运行这段代码时,什么都不会发生。我没有得到任何ERORR或输出。 如果有人能帮忙,那就太棒了。谢谢

  • 我希望这样,当我键入一个命令和一条消息时,它将把这条消息转发到机器人与python不和谐连接的每个服务器中的一个通道。我知道如何获取消息并寻找命令,但我不知道如何找到机器人可以在每个服务器上发布的频道,然后发送它。 有人能帮我吗?

  • 我试图让我的自我机器人加入服务器。我知道self-bots反对discordtos,但我想学习一些新的东西。 这是我尝试过的命令: 错误: