我在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库中定义但不是。
我该怎么做?
答案 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的重写版本,则必须通过执行ctx
将async def hello(ctx):
参数传递给hello。然后,您无法使用bot.say
(或bibi.say
)进行重写。您必须使用ctx.send(message)
而不是bibi.say(message)
。