ぴぴぶろぐ

いろいろたまにプログラミング

Discord.pyのawait create_custom_emojiを使ってみた

こんにちは。ぴぴです。

 

 

 

 

 

 はじめに

DiscordのBotを私はDiscord.pyを用いて作っていますが、Discord.pyの公式リファレンス(https://discordpy.readthedocs.io/ja/latest/)を暇つぶしに見て使えそうな機能を試すことを最近ちょくちょくやっていて、学校の課題でC言語をやる傍らdiscord.pyやPythonについての理解を深めています。C言語とごっちゃになることがまれによくあってつらい

その中で最近面白いなと思ったものを紹介していきたいと思います。

 

await create_custom_emoji(*, name, image, roles=None, reason=None)

公式リファレンス:https://discordpy.readthedocs.io/ja/latest/api.html?highlight=create%20custom%20emoji#discord.Guild.create_custom_emoji

これで画像をサーバーのカスタム絵文字に追加できると知って、面白いなって思ってBotを作ってみました。

 

ソースコード

/pと入力し、一緒に画像を添付するとその画像をカスタム絵文字に変換するBotです。

import discord 
client = discord.Client()
@client.event 
async def on_ready():
    print('Logged in as')
    print(client.user.name)
    print(client.user.id)
    print('------')
server = ’絵文字を登録したいサーバー’
@client.event
async def on_message(message): 
    if message.content.startswith('/p'):
       attachment = message.attachments[0]
       guild = client.get_guild(server)
       await attachment.save("att.gif")
       with open("att.gif", "rb") as img:
         img_emoji = img.read()
       await message.channel.send("絵文字に設定します。")
       await guild.create_custom_emoji(name="___",image=img_emoji)
client.run('BOTのトークン')

最低でもawait create_custom_emoji()の第一引数にカスタム絵文字として登録するときの名前、第二引数にカスタム絵文字にしたい画像のパスを入力すれば大丈夫です。

こんな感じに動いてくれます。

f:id:st6R:20200717211745p:plain

256KB以上の画像を送ってしまうとエラーでカスタム絵文字になりません。

エラーが出た時にエラーが起こったことを通知するようにはしていないです。

 

ブキルーレットBot更新のおしらせ(ついで)

https://st6r.hatenablog.com/entry/2020/06/15/192528?_ga=2.155102776.1800115853.1594981807-54866893.1584258511

ブキルーレットBotに機能を追加しました。それに従って上の記事を書き直しています。