Discord bot向具有特定用户ID的用户发送消息

时间:2017-11-15 02:07:43

标签: python discord

我在discord服务器中有一个机器人,当他们输入一个名为hello的命令时,机器人将从列表中的随机选择中做出响应。

如果它是一个非常具体的用户ID,我试图让机器人以不同的方式响应。

这不起作用,

@bibi.command()
async def hello():
    if message.author.id == ('279460450637185024'):
        choicesa = ('get away', 'dont greet me', 'youre wasting my time', 'Hallo', 'oh god its you', '....' , 'dude go away' , 'WHAT DO YOU WANT' , 'HIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII' , 'i dont talk to democrats')
        await bibi.say(random.choice(choicesa))
    elif message.author.id == ('80971950054187008'):
        choicesl = ('lauren...', 'hi. lauren.')
        await bibi.say(random.choice(choicesl))

它说消息没有定义,现在我明白了,我认为它是在discords库中定义但不是。

我该怎么做?

3 个答案:

答案 0 :(得分:0)

我知道它会搞乱你所有的其他命令,但如果你这样做,就像我在下面做的那样,它会起作用。

@client.event
async def on_message():
if message.content == "hello":
  if message.author.id == ('279460450637185024'):
    choicesa = ('get away', 'dont greet me', 'youre wasting my time', 'Hallo', 'oh god its you', '....' , 'dude go away' , 'WHAT DO YOU WANT' , 'HIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII' , 'i dont talk to democrats')
    await bibi.say(random.choice(choicesa))
  elif message.author.id == ('80971950054187008'):
    choicesl = ('lauren...', 'hi. lauren.')
    await bibi.say(random.choice(choicesl))

答案 1 :(得分:0)

只需尝试在函数中添加ctx作为参数,然后将其添加为启动器。

@bibi.command(pass_context=True)
 async def hello(ctx):
       if ctx.message.author.id == '279460450637185024':
           choicesa=['hi','hello','okay?']
           await bibi.say(random.choice(choicesa))

答案 2 :(得分:0)

如果您正在使用d.py的重写版本,则必须通过执行ctxasync def hello(ctx):参数传递给hello。然后,您无法使用bot.say(或bibi.say)进行重写。您必须使用ctx.send(message)而不是bibi.say(message)