当特定用户输入内容时,如何使我的机器人发送消息?

时间:2020-09-12 02:13:54

标签: python python-3.x events discord discord.py

我想让我的机器人在特定用户开始输入(即我)时做出响应

@client.event
   async def on_typing(channel, user, when):
       member = client.get_user(id='user_id')
       me = 'my_id'
         if me == member.typing:
             await channel.send('*cough* loser...')

如果我使用==进行比较,我将没有任何反应,如果我使用!=,则该漫游器将按预期方式对所有人进行响应。

如果我将if语句运行为:

if me.typing:
    await channel.send('*cough* loser...') 

该机器人只是再次回应所有人,这有什么用?

1 个答案:

答案 0 :(得分:1)

您的代码有误:

  • client.get_user()仅接受一个参数,该参数是单个id,并且必须是整数。您必须以这种方式使用它→user = client.get_user(id)
  • 读取文档member.typing()可以使您拥有这个xxxx is typing并返回一个上下文管理器而不是整数,这就是为什么不会触发您的第一个if语句的原因。
  • li>
  • 如上所述,me != member.typing总是会被触发,因为它们永远不会是相同的类型和相同的值。

您实际上不需要获取用户对象,只需使用user.id并将其与所需的ID进行比较即可。
ID必须是整数,而不是字符串,否则if语句将永远不会触发。

@client.event
async def on_typing(channel, user, when):
    if user.id == your_id: #Replace your_id with the id you want (must be an int)
        await channel.send('*cough* loser...')

参考:discord.py文档→discord.on_typing