【问题标题】:Trying to check if a wait_for reaction is a certain emoji尝试检查 wait_for 反应是否是某个表情符号
【发布时间】:2019-06-26 07:41:06
【问题描述】:

我正在尝试检查我的一个 wait_for 返回是否是某个表情符号。

我试过 str(one.reaction.emoji),我试过 one.reaction.emoji

charm = discord.Embed(description=f"React With The Corresponding Emoji, What You Wish To Edit.", color=0xff89ff)
charm.set_author(name=f"{user.name}")
charm.set_thumbnail(url=str(user.avatar_url))
charm.add_field(name="Name", value=":one:")
charm.add_field(name="Sexual Preference", value=":two:")
charm.add_field(name="Biography", value=":three:")
charm.add_field(name="Hobbies", value=":four:")
charm.add_field(name="Location", value=":five:")
editmsg = await user.send(embed=charm)
await editmsg.add_reaction(emoji="1\N{combining enclosing keycap}")
await editmsg.add_reaction(emoji="2\N{combining enclosing keycap}")
await editmsg.add_reaction(emoji="3\N{combining enclosing keycap}")
await editmsg.add_reaction(emoji="4\N{combining enclosing keycap}")
await editmsg.add_reaction(emoji="5\N{combining enclosing keycap}")
one = bot.wait_for("reaction_add", check=onecheck)

if str(one.reaction.emoji) == "1\N{combining enclosing keycap}":
await user.send("What Do You Wish To Change Your Name To?")

【问题讨论】:

  • 你能分享你的onecheck函数的定义吗?
  • def onecheck(reaction, user, m): return user == message.author and str(reaction.emoji) == "1\N{combining enclosing keycap}" and isinstance(m.channel, discord.abc.PrivateChannel) and m.author.id == user.id
  • 那么我会用你的支票来检查返回的表情符号是否是我想要的,如果是的话怎么办? @PatrickHaugh
  • 通过check=reaction_check(message=editmsg, emoji=[f"{i}\N{combining enclosing keycap}" for i in range(1,6)], author=user)emoji 可以是 unicode 表情符号或 Emoji 对象或序列。

标签: python discord.py discord.py-rewrite


【解决方案1】:

你可以试试这样的:

try:
    reaction, user = await bot.wait_for('reaction_add', timeout=30.0)
except asyncio.TimeoutError:
    await user.send('I did not receive your reaction :(')
else:
    if str(reaction.emoji) == '?':
        await user.send('Haha')
    if str(reaction.emoji) == '?':
        await user.send('Say something')
    if str(reaction.emoji) == '?':
        await user.send('and so on')
    ...

【讨论】:

  • reaction 将是一个 discord.Reaction 对象,因此它永远不会等于字符串。
  • 如果我这样做 if str(reaction) == "emote": 它可能会工作
  • @PatrickHaugh 感谢您的观察!!我刚刚编辑了我的答案
猜你喜欢
  • 2020-07-09
  • 2021-06-24
  • 2019-02-03
  • 1970-01-01
  • 1970-01-01
  • 2021-02-22
  • 2019-06-11
  • 2012-09-11
  • 2015-01-15
相关资源
最近更新 更多