Discordの絵文字IDを確認する方法
Discordのbotで絵文字を利用したくて、色々調べた結果あんまり日本語の記事がなかったので備忘録代わりに。
結論
絵文字IDを調べたいサーバー(開発側だとGuild(ギルド)って言うらしいですね!)で、
\:emojiname:
バックスラッシュを付けて絵文字表示しようとすると
<:emojiname:275938272957>
と言うような表示になりIDを取得できます。
余談(discordgoでの絵文字の使い方)
discordgoを使ってDiscordのbotを作ろうかなって思っていて、botで絵文字表示をしようとしたところ絵文字にならない!ということに気づき、godocを読んでいたところ、Emojiという構造体があることを発見。
Emojiを取得できそうな関数がないかなと思って見てみると
func (*State) Emoji
func (s *State) Emoji(guildID, emojiID string) (*Emoji, error)
Emoji returns an emoji for a guild and emoji id.
説明文を見る限りこれっぽい!で、GuildIDとEmojiIDってなんだろ?となり、調べてみるとguildIDはサーバーのIDのこと、emojiIDは上で書いた方法で調べられるみたい。
最後にEmojiのままでは出力できないのでフォーマットをStringに変換する関数
func (*Emoji) MessageFormat
func (e *Emoji) MessageFormat() string
MessageFormat returns a correctly formatted Emoji for use in Message content and embeds
を利用して、絵文字の表示に成功しました。
ソースコード
emoji,err := s.State.Emoji(GuildID,"123456748392")
if err != nil{
panic(err)
}
sendMessage(s,c,emoji.MessageFormat())
参考文献
Can bots display custom emojis
[ユーザー/サーバー/メッセージIDはどこで見つけられる?] (https://support.discordapp.com/hc/ja/articles/206346498-%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC-%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC-%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8ID%E3%81%AF%E3%81%A9%E3%81%93%E3%81%A7%E8%A6%8B%E3%81%A4%E3%81%91%E3%82%89%E3%82%8C%E3%82%8B-)