3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

いなたつAdvent Calendar 2019

Day 20

pythonでdiscordのbot作るならフレームワークを使おうね

Last updated at Posted at 2019-12-20

はじめに

いなたつアドカレの二十日目の記事です。

Discordのbotを作るならBot Commands Frameworkを使うと楽だよってお話。

なにそれ

discordのbotをpythonで作るときにめっちゃ楽にできるフレームワーク(KONAMI)

じっそー

いんぽーとなど

from discord.ext import commands
import traceback

INITIAL_EXTENSION = 'こぐのぱす'

INITIAL_EXTENSION = 'cogs.hoge'

  • cogs
    • hoge.py
  • main.py

ってなってたらこれで登録できます。

main

if __name__ == '__main__':
    bot = MyBot(command_prefix='!')
    bot.run('とーくんをにゅうりょくしてね') 

command_prefixでコマンドを認識するための識別子を決めます。ここでは「!」を識別子に設定しています。

MyBotのクラス

class MyBot(commands.Bot):

    # MyBotのコンストラクタ。
    def __init__(self, command_prefix):
        super().__init__(command_prefix)
        try:
            self.load_extension(INITIAL_EXTENSION)
        except Exception:
            traceback.print_exc()

    # Botの準備完了時に呼び出されるイベント
    async def on_ready(self):
        print('--------じゅんびちゅ-------')
        print(self.user.name)
        print(self.user.id)
        print('-------------------------')

コグを読み出してエラーが出たらエラーを表示する

hoge.py
from discord.ext import commands # Bot Commands Frameworkのインポート
import discord # discord.pyをインポート

class Hoge(commands.Cog):
    def __init__(self,bot):
        self.bot = bot
        self.players = None

    @commands.command(aliases=['h'])
    async def hello(self, ctx):
        await ctx.send(f'Hello! {ctx.author.name}さん!')

def setup(bot):
    bot.add_cog(Hoge(bot))

これで、!hogeをすると、Hello!いなたつさん!みたいな感じで返してくれます
そして @commands.command()の引数にaliases=['h']を与えています。これで、!hでもHello!いなたつさん!ができます。

さらにサブコマンドなどをつくることもできるので、pythonでdiscordbotを作る時はこれをつかいましょーね。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?