以下是我个人在使用Python创建Discord BOT时经常使用的模板(备忘录):

前提 – Only need one option.

Python 3.6.6
Discord.py-1.2.5
├ cogs
│   └ mainCmd.py
└ main.py

代码 (Mandarin Chinese)

import discord
from discord.ext import commands
import traceback 

DiscordBot_Cogs = [
    'cogs.mainCmd'
]

class MyBot(commands.Bot):
    def __init__(self, command_prefix):
        super().__init__(command_prefix)
        for cog in DiscordBot_Cogs:
            try:
                self.load_extension(cog)
            except Exception:
                traceback.print_exc()

    async def on_ready(self):
        print('BOT起動')

if __name__ == '__main__':
    bot = MyBot(command_prefix='!?')
    bot.run('TOKEN') 
from discord.ext import commands

class MainCmdCog(commands.Cog):
    def __init__(self, bot):
        self.bot = bot

    @commands.command()
    async def cmd(self, ctx):
        await ctx.send("コマンドを受信しました。")

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

说明和警告

主要的.py

DiscordBot_Cogs = [
    'cogs.mainCmd'
]

将’cogs.mainCmd’添加到名为DiscordBot_Cogs的列表中。
在添加命令用的Python文件(cog)时,请按照列表的格式进行。

DiscordBot_Cogs = [
    'cogs.mainCmd',
    'cogs.exampleCmd'
]

假设。
“cogs”是文件夹的名称,”mainCmd”是没有扩展名的文件名。

for cog in DiscordBot_Cogs:
    try:
        self.load_extension(cog)
    except Exception:
        traceback.print_exc()

使用for循环遍历先前的列表,利用try和except语句来注册COG。(如果文件名错误或文件不存在,将会抛出错误。)

if __name__ == '__main__':
    bot = MyBot(command_prefix='!?')
    bot.run('TOKEN') 

在BOT的指令中,頭部需要加上一個字元(像是MonsterBOT的話,可以形容成類似於Minecraft中的/)

主命令.py

@commands.command()
async def cmd(self, ctx):
    await ctx.send("コマンドを受信しました。")

仅需输入“!?cmd”即可在该频道上接收并发送给BOT的命令。

使用这个参数时,只需按照以下方式即可。

@commands.command()
async def cmd(self, ctx, *args):
    if len(args) == 0:
        await ctx.send("引数が存在しない。")
    if len(args) == 1:
        await ctx.send("引数が1つで **" + args[0] + "** である。")
    if len(args) == 2:
        await ctx.send("引数が2つで **" + args[0] + "** と **" + args[1] + "** である。")

只需要增加就可以了。