monster2408
@monster2408

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

[discord.py]Webhookメッセージにリアクションを付けたい

解決したいこと

Webhookを使ってメッセージを送信して同時にリアクションを二つ付ける。
Webhookを使わずにBotからメッセージを送信し,それに対してリアクションを追加したらやりたいことは実現できたが,できればWebhookを使いたい。

発生している問題・エラー

エラー等はとくにない模様
単にリアクションだけが追加されない。

該当するソースコード

if user == None:
    print("user.none")
    return
if user.bot:
    print("user.bot.true")
    return
await message.remove_reaction(reaction.emoji, user)
cont = message.content
if reaction.emoji.name == "📨":
    if cont not in Var.ShortCutMsg:
        return
    if cont == Var.ShortCutMsg[0]:
        channel = self.bot.get_channel(Var.MLSKIKAKUCH)
    else:
        channel = self.bot.get_channel(Var.MLSNOTICE)
    ch_webhooks = await channel.webhooks()
    icon = user.avatar_url_as(format="png")
    webhook = discord.utils.get(ch_webhooks, name=Var.SHORTCUT_WEBHOOK_NAME)
    if webhook is None:
        webhook = await channel.create_webhook(name=Var.SHORTCUT_WEBHOOK_NAME)
    msg = await webhook.send(content=cont, username=user.display_name, avatar_url=icon)
    if channel.id == Var.MLSKIKAKUCH:
        for emojis in ('🤚', '❌'):
            await msg.add_reaction(emojis)
    return

自分で試したこと

  • Discord.pyのdocsを見たが解決できなかった
  • チャンネルが間違えている・間違ったWebhookを使っている点は確認済み(Webhookはなければ作っているから問題なし)
0

1Answer

自己解決

- msg = await webhook.send(content=cont, username=user.display_name, avatar_url=icon)
+ msg = await webhook.send(content=cont, username=user.display_name, avatar_url=icon, wait=True)

引数waitとは...

wait (bool) -- サーバーが応答を送信するまで待つべきかどうか。これは、 True に設定された場合にこの関数の返り値が None から WebhookMessage に変わることを意味します。もしこのWebhookの種類が WebhookType.application の場合はこれは常に True に設定されます。

discord.py APIリファレンスより

0Like

Your answer might help someone💌