🦆

Discord.pyでメッセージリンクを取得する方法

2022/11/04に公開1

調べても出てこなかったので垢作って書いておきます。
discord.py 1.7.3

そもそもメッセージリンクって何?

この記事読んでる人は取得方法が知りたいでしょうけどちょっとだけ説明させてください。
メッセージリンクとは、
https://discord.com/channels/xxxxxxxxxx/xxxxxxxxxx/xxxxxxxxxxxxx
こういつやつです。

Discord内でメッセージリンクを取得する場合

そのため特定のサーバー・チャンネルでbotを動かす場合は先にサーバーIDとメッセージチャンネルIDを取得してどこかにメモしておきましょう。

サーバーIDはサーバー設定→ウィジェットで見れる

メッセージチャンネルIDは取得したいチャンネル項目を右クリックして「IDをコピー」をクリック
サーバーID・メッセージチャンネルIDの取得は、他のところでも解説されてると思います。
しかしメッセージIDはなかなか解説されているところが少なく、API見てもわからない人には難しいと思います。

メッセージID・リンクを取得する方法

me_id = message.id

これでメッセージIDを取得できます。
これでメッセージリンクに必要な物は揃いました。
一応私が実際に使ったコードを貼っておきます。
(保存という単語がメッセージの中にあったら、そのメッセージ内容・時間・メッセージリンクをtxtファイルに保存するというコード)

if ('保存') in message.content:
        me_id = message.id

link = "https://discord.com/channels/xxxxxx/xxxxxx/{}\n".format(me_id)
# xxxxxの部分にIDを事前に入れてる
        keep = "-----\n{}\n".format(message.content)
        f = open('keep.txt', 'a',encoding='UTF-8')
        t = "{}\n".format(time)
        datalist = [keep,t,link]
        f.writelines(datalist)
        f.close()
        send_message = "メッセージリンクを保存しました。\n{}".format(link)
        await message.channel.send(send_message)

書くことがなくなりましたのでこれでおしまいです。

Discussion

2レジ2レジ

余計なお世話でしたら申し訳ありませんが、
Message.jump_url
を使うとより容易に実現できるかもしれません。