[DAY 15]cog架构用法(2/2)

cog架构还有一个很好用的功能是可以在不关bot的情况下将你写的bot的功能进行读取或卸载

主程序写法

import discord
from discord.ext import commands
from dotenv import load_dotenv
import os


if __name__ == '__main__':

    intents = discord.Intents.default()
    intents.members = True
    bot = commands.Bot(command_prefix='?',intents =intents)

    #读取Token
    load_dotenv()
    TOKEN = os.getenv('DISCORD_TOKEN')
    GUILDID_TOKEN = os.getenv('GUILDID_TOKEN')
    
    @bot.command()
    async def load(ctx,extension):
        bot.load_extension(f"cmds.{extension}")

    @bot.command()
    async def unload(ctx,extension):
        bot.unload_extension(f"cmds.{extension}")
    
    # bot.get_cog(Greetings(bot))
    for filename in os.listdir("./cmds"):
        if filename.endswith('.py'):
            bot.load_extension(f"cmds.{filename[:-3]}")
    
        
    bot.run(TOKEN)

其中load跟unload里的extension是你的class名称

cmds是你放你写bot功能的资料夹

这边放一个简单的bot功能

class main(commands.Cog):
    def __init__(self, bot):
        self.bot = bot
        load_dotenv()
        self.TOKEN = os.getenv('DISCORD_TOKEN')
        self.GUILDID_TOKEN = os.getenv('GUILDID_TOKEN')
        #读取字典
    
    @commands.command()
    async def ping(self,ctx):
        await ctx.send('Pong!')

因为我们在主程序:

bot = commands.Bot(command_prefix='?',intents =intents)

有规定前缀要用"?",记得在呼叫功能时加前缀

在频道上打ping有出现反应

卸载掉main後打ping没出现反应代表卸载成功,读取main後打ping有反应代表读取成功


<<:  Day15-TypeScript(TS)的存取子(Accessors)

>>:  Day 15 Flask 回传参数

【心得】Sublime TexT 3 即时连线

一开始学习时用Sublime,久了之後也成为一种习惯(,,・ω・,,) 但是初学者很喜欢写一步骤就要...

Day 26 - [Android APP] 04-MVVM - Repository与API串接

前几天介绍的 MVVM 架构,可以参考这篇 [[Android APP] 01-架构介绍-MVVM]...

【左京淳的JAVA学习笔记】第五章 class定义与物件生成

如果把程序当成是魔法,前面几章都是基本的咒文。 到这章开始需要用到想像力了。 class(类) cl...

[Day8] impl 以及 mod (将程序码放在不同档案使用)

我好怕我起床已经明天了,所以先来打文吧。 废话不多说,开始今天的内容。 impl 由於我自己不太会使...

更新纪录 2021/10/03

1.把铁人赛的程序码全部移到Ithome30days里面,之後没有发现甚麽bug应该不会修改他 2....