Discord.py上的轮询系统

时间:2020-06-08 20:23:39

标签: python discord.py

@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机器人创建了一个民意调查。当我触发命令时,它什么都不做。没有错误,没有消息,什么都没有。我认为我的代码的某些部分可能已过时。没有代码不在类之内。

1 个答案:

答案 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()

确保您使用的是哪个版本的库非常重要,因为它可以防止您将来遇到语法错误和此类不幸。从现在开始,完全不参考旧文档,而应该使用新文档。


参考: