我想让我的机器人在特定用户开始输入(即我)时做出响应
@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...')
该机器人只是再次回应所有人,这有什么用?
答案 0 :(得分:1)
您的代码有误:
client.get_user()
仅接受一个参数,该参数是单个id
,并且必须是整数。您必须以这种方式使用它→user = client.get_user(id)
。member.typing()
可以使您拥有这个xxxx is typing
并返回一个上下文管理器而不是整数,这就是为什么不会触发您的第一个if
语句的原因。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