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)
一开始学习时用Sublime,久了之後也成为一种习惯(,,・ω・,,) 但是初学者很喜欢写一步骤就要...
前几天介绍的 MVVM 架构,可以参考这篇 [[Android APP] 01-架构介绍-MVVM]...
如果把程序当成是魔法,前面几章都是基本的咒文。 到这章开始需要用到想像力了。 class(类) cl...
我好怕我起床已经明天了,所以先来打文吧。 废话不多说,开始今天的内容。 impl 由於我自己不太会使...
1.把铁人赛的程序码全部移到Ithome30days里面,之後没有发现甚麽bug应该不会修改他 2....