【jishaku】discord botでpythonのコマンドを実行する方法

:::note warn
アカウントを移行しました。最新の記事は以下から確認できます。
https://zenn.dev/sonyakun/articles/jishaku_discord_bot
::: 

## 今回は、discord.pyのbotで、pythonのコマンドやコードを動かす方法を紹介していきます！　
:::note warn
おそらくスラッシュコマンドでは動作しません。
:::

では、まず、以下のコマンドを実行してください。
```pip install jishaku```
できない場合は
```py -m pip install jishaku```
を実行してください。
discord.pyは以下のコマンドで入れられます。
```py -m pip install discord.py```
そしたら、メモ帳などを開いてください。(僕は今VScode持ってないのでIDLEを使います。)
## botを作成する方法
https://discord.com/developers/applications
上のサイトにアクセスします。
こんな画面になると思うので、New Applicationをクリックします。
![](https://media.discordapp.net/attachments/953939348561199126/980034854752256020/unknown.png?width=997&height=573)
そしたら、こんな画面が出てくるので、
NAMEにbot名を入力して、Createをクリックします。
![](https://media.discordapp.net/attachments/953939348561199126/980034931327660142/unknown.png)
![](https://media.discordapp.net/attachments/953939348561199126/980035217333055538/unknown.png?width=227&height=572)
botというところをクリックして、右側の画面にボタンが出てくるので、それを押します。
![](https://media.discordapp.net/attachments/953939348561199126/980035467909160970/unknown.png?width=997&height=573)
そしたら、上の画面のようになるので、Reset tokenを押します。
そして出てきた文字列をコピーします。
## 作っていく
そしたら、以下のコードを入力します。
```py
import discord
from discord.ext import commands
from jishaku.features.python import PythonFeature
from jishaku.features.root_command import RootCommand

bot = commands.Bot(command_prefix='好きなプレフィクス', help_command=None) #help_command=Noneは標準のヘルプコマンドを削除する引数です。お好みに調整してください。
TOKEN = 'ここにアクセストークン' #discordbotのログインに必要です

class MyBot(commands.Bot):
    async def is_owner(self, user: discord.User):
        if something:  
            return True
#jishakuは家の扉を開けているようなものなので、botの所有者のみが触れるようにします。
        return await super().is_owner(user)

@bot.event
async def on_ready(): # 起動したらコンソールにログイン通知が表示されます
    print("-----------")
    print("起動しました")
    print("-----------")

@bot.command()
async def loadjsk(ctx): #jishakuをロードするコマンド
    yourID = あなたのID 
    if ctx.message.author.id == yourID or ctx.message.author.id == friendID:
        bot.load_extension('jishaku')
        print("success")
        print("https://github.com/Gorialis/jishaku")
        await ctx.send("📩`jishaku`")

bot.run(TOKEN) ## Botの起動とDiscordサーバーへの接続
```
##コードの解説
```py
import discord #discord.pyを読み込む
from discord.ext import commands #プレフィクスなどを利用可能にする
from jishaku.features.python import PythonFeature #jishakuを読み込む
from jishaku.features.root_command import RootCommand #jishakuを読み込む
```
```py
class MyBot(commands.Bot):
    async def is_owner(self, user: discord.User):
        if something:  
            return True

        return await super().is_owner(user)
#このクラスを読み込むことでbot作成者のみがjishakuを利用できるようになる(推奨)
```
```py
@bot.command()
async def loadjsk(ctx):
    yourID = あなたのID
    if ctx.message.author.id == yourID or ctx.message.author.id == friendID:
        bot.load_extension('jishaku')
        print("success")
        print("https://github.com/Gorialis/jishaku")
        await ctx.send("📩`jishaku`") #jishakuを読み込んだことを知らせるメッセージ
```
```py
@bot.event
async def on_ready():
    print("-----------")
    print("起動しました")
    print("-----------")
#起動メッセージ
```
##jishakuの使い方
まず、jishakuをロードします。
![](https://media.discordapp.net/attachments/953939348561199126/978786627574956052/91dd7ee769e045d3.PNG)
#コマンド
簡単な計算や
![](https://media.discordapp.net/attachments/953939348561199126/978786627835011132/2.PNG)
エラー表示も
![](https://media.discordapp.net/attachments/953939348561199126/978786626773856316/3.PNG)
printももちろん実行できます。
![](https://media.discordapp.net/attachments/953939348561199126/978786627084247080/4.PNG)
![](https://media.discordapp.net/attachments/953939348561199126/978786627352674364/5.PNG)
アンロード(プレフィクスがmc!のばあい)は、
```mc!jsk unload jishaku```
でできます。