如何停止discord bot响应自身/所有其他bot[Python 3.6中的discord bot]

如何停止discord bot响应自身/所有其他bot[Python 3.6中的discord bot],python,bots,discord,Python,Bots,Discord,我对编程非常陌生,只是学习而已。我觉得制作一个discord机器人是一个很好的学习方式,我很享受,我只是有点被卡住了。所以我的机器人是私有的,在我们的discord服务器上有一个笑话,每当用户发送“k”时,所有机器人都会响应“k”。我们有Dyno,我朋友的私人机器人,希望还有我的。我所有的代码都正常工作了,只是因为命令和答案是一样的。我的机器人只是用“k”向服务器发送垃圾邮件,直到我关闭了机器人,我如何停止它 代码: @client.event async def on_message(mess

我对编程非常陌生,只是学习而已。我觉得制作一个discord机器人是一个很好的学习方式,我很享受,我只是有点被卡住了。所以我的机器人是私有的,在我们的discord服务器上有一个笑话,每当用户发送“k”时,所有机器人都会响应“k”。我们有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) 

您只需在消息事件上运行以下命令:

if(!message.author.user.bot)返回//不是确切的密码
因为消息事件可以
返回用户,并且用户有一个默认值
message.author
返回一个成员,因此您可以调用的
user
对象,然后像我上面所做的那样执行检查

伪代码:

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

您只需在消息事件上运行以下命令:

if(!message.author.user.bot)返回//不是确切的密码
因为消息事件可以
返回用户,并且用户有一个默认值
message.author
返回一个成员,因此您可以调用的
user
对象,然后像我上面所做的那样执行检查

伪代码:

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

没关系,我终于明白了。对于那些有相同问题的人,您必须添加

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)

没关系,我终于明白了。对于那些有相同问题的人,您必须添加

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)

我觉得这是个逻辑问题。您的机器人发送
k
。此消息再次到达您的bot本身,被解释为另一个触发器,因此您的bot再次发送
k
,从而结束一个无休止的循环。(现在)让你的机器人只做出ok
x
的反应,然后用
k
回复怎么样?那么它就不能自我触发。正确的解决方案是更仔细地查看触发消息,如果发现它是来自bot本身的消息,请忽略它。您需要添加一个测试来检查发布“K”的实体的用户名,或者。。。在能够再次响应之前,您需要添加一个超时,比如说5秒。现在,我确实有一个临时的解决方法,它用k响应!所以它不是无限的,但它仍然重复,重复两到三次。我将进一步探讨如何忽略某些用户ie本身和所有其他机器人。虽然不多,但这是个开始:对我来说,DSounds是个逻辑问题。您的机器人发送
k
。此消息再次到达您的bot本身,被解释为另一个触发器,因此您的bot再次发送
k
,从而结束一个无休止的循环。(现在)让你的机器人只做出ok
x
的反应,然后用
k
回复怎么样?那么它就不能自我触发。正确的解决方案是更仔细地查看触发消息,如果发现它是来自bot本身的消息,请忽略它。您需要添加一个测试来检查发布“K”的实体的用户名,或者。。。在能够再次响应之前,您需要添加一个超时,比如说5秒。现在,我确实有一个临时的解决方法,它用k响应!所以它不是无限的,但它仍然重复,重复两到三次。我将进一步探讨如何忽略某些用户ie本身和所有其他机器人。它不多,但它的开始:D