【问题标题】:How to stop discord bot respond to itself/all other bots [Discord Bot in Python 3.6]如何阻止不和谐机器人响应自身/所有其他机器人 [Python 3.6 中的不和谐机器人]
【发布时间】:2018-06-27 11:51:54
【问题描述】:

我对编程很陌生,只是在学习。我认为制作一个不和谐的机器人是一种很好的学习方式,我很享受它,我只是有点卡住了。所以我的机器人是私有的,并且在我们的不和谐服务器中有一个正在运行的笑话,即每当用户发送“k”时,所有机器人都会以“k”响应。 ATM 我们有 Dyno,我朋友的私人机器人,希望是我的。我的所有代码都能正常工作,除了因为命令和答案相同,我的机器人只是用“k”向服务器发送垃圾邮件,直到我关闭机器人,我该如何停止它?

代码:

@client.event
async def on_message(message):
    if message.content ==("k"):
        await client.send_message(message.channel, "k")

    await client.process_commands(message) 

【问题讨论】:

  • 对我来说听起来像是一个逻辑问题。你的机器人发送k。此消息再次到达您的机器人本身,被解释为另一个触发器,因此您的机器人发送k 再次,从而关闭无限循环。 (暂时)让您的机器人仅对x 做出反应并回复k 怎么样?然后它不能触发自己。正确的解决方案是更仔细地查看触发消息,如果可以发现它是来自机器人本身的消息,则忽略它。
  • 您需要添加一个测试来检查发布“K”的实体的用户名,或者...您需要添加一个超时时间,然后才能再次响应,比如 5 秒跨度>
  • 我现在确实有一个临时解决方法,它以 k 响应!所以它不是无限的,但它仍然重复就像两三遍。我将更多地研究如何忽略某些用户,即它本身和所有其他机器人。它并不多,但它的开始:D

标签: python bots discord


【解决方案1】:

你可以简单地在你的消息事件上运行它:

if(!message.author.user.bot) return; //not the exact code

因为消息事件可以return用户,而用户有一个默认的bot checkmessage.author 返回一个成员,所以你可以调用memberuser 对象,然后像我上面那样执行检查。

伪代码:

If the author of the message (user) is a bot: return; 
This will prevent an infinite loop from occuring

【讨论】:

    【解决方案2】:

    没关系,我终于想通了。对于那些有同样问题的人,你必须添加

    if message.author == client.user:
            return
        if message.author.bot: return
    

    到代码,它可以工作,所以我的现在看起来像这样:

    @client.event
    async def on_message(message):
        # we do not want the bot to reply to itself
        if message.author == client.user:
            return
        if message.author.bot: return
        if message.content.startswith('k'):
            msg = 'k'.format(message)
            await client.send_message(message.channel, msg)
    

    【讨论】:

      【解决方案3】:

      你可以在js中使用这个-->

       if (message.author.bot == false){
        //code here if the user isn't a bot
       }
      //lol i am noob yet
      

      【讨论】:

        猜你喜欢
        • 2018-11-25
        • 2020-10-11
        • 2021-10-30
        • 2021-05-27
        • 2021-07-15
        • 2019-04-13
        • 2021-11-10
        • 2021-07-07
        • 2018-03-20
        相关资源
        最近更新 更多