@client.command()
async def quickpoll( ctx, question, *options: str):
if len(options) <= 1:
await ctx.send('You need more than one option to make a poll!')
return
if len(options) > 10:
await ctx.send('You cannot make a poll for more than 10 things!')
return
if len(options) == 2 and options[0] == 'yes' and options[1] == 'no':
reactions = ['✅', '❌']
else:
reactions = ['1⃣', '2⃣', '3⃣', '4⃣', '5⃣', '6⃣', '7⃣', '8⃣', '9⃣', '?']
description = []
for x, option in enumerate(options):
description += '\n {} {}'.format(reactions[x], option)
embed = discord.Embed(title=question, description=''.join(description))
react_message = await ctx.send(embed=embed)
for reaction in reactions[:len(options)]:
await react_message.edit(react_message, reaction)
embed.set_footer(text='Poll ID: {}'.format(react_message.id))
await react_message.edit(embed=embed)
我有这段代码,使我的discord.py机器人创建了一个民意调查。当我触发命令时,它什么都不做。没有错误,没有消息,什么都没有。我认为我的代码的某些部分可能已过时。没有代码不在类之内。
答案 0 :(得分:1)
在更新版本的d.py上运行时,您仍在使用旧文档。
Recent docs
Major changes from v0.16.x -> v1.x
您的案例中最明显的变化是:
await self.bot.say(... # <- OLD SYNTAX
# await abc.Messageable.send(... <- general usage for NEW SYNTAX
await ctx.send(... # for your case specifically (which you have used at the top)
并用于编辑消息:
await self.bot.edit_message(... # <- OLD SYNTAX
# await Message.edit(... <- general usage for NEW SYNTAX
await react_message.edit(... # for your case specifically
还有用于添加反应的旧语法,但是您可以在此处找到用于添加反应的文档-与上述概念相同:Message.add_reaction()
。
确保您使用的是哪个版本的库非常重要,因为它可以防止您将来遇到语法错误和此类不幸。从现在开始,完全不参考旧文档,而应该使用新文档。
参考: