iT邦幫忙

0

discord.bot找不到command

  • 分享至 

  • xImage

大家好 第一次在這裡發文
最近在研究怎麼用Python寫Discord機器人
但在用官方的Cog架構寫指令時碰到了一些問題
導致執行時出現這樣的錯誤https://ithelp.ithome.com.tw/upload/images/20221119/20155227wX2Lp3XggT.png
目前的程式碼如下

from discord.ext import commands
import discord
import json
import os

with open('setting.json','r',encoding = 'utf8') as jfile:
    jdata = json.load(jfile)
    
intents = discord.Intents.all()
intents.members = True
bot = commands.Bot(command_prefix='G!',intents = intents)

for filename in os.listdir('./cmds'):  #寫入cmds裡的.py
    if filename.endswith('.py'):
        bot.load_extension(f'cmds.{filename[:-3]}')

@bot.command()
async def load(ctx, extension):
    bot.load_extension(f'cmds.{extension}')
    await ctx.send(f'{extension} has loaded!')

@bot.command()
async def unload(ctx, extension):
    bot.unload_extension(f'cmds.{extension}')
    await ctx.send(f'{extension} has unloaded!')

@bot.command()
async def reload(ctx, extension):
    bot.reload_extension(f'cmds.{extension}')
    await ctx.send(f'{extension} has reloaded!')

@bot.event
async def on_ready():
    print(f'{jdata["Name"]} is online.')
            
if __name__ == "__main__":
    bot.run(jdata['TOKEN'])

寫在主程式裡的指令都能正常執行
但如果把指令搬到其他子class裡的話就會找不到指令

from discord.ext import commands
import discord

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

    @commands.command()
    async def say(self,ctx):
        await ctx.send('hello')

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

爬文爬了老半天,看了官方的API也沒有頭緒
測試了很久也不知道是哪邊出錯了
所以來這裡尋求大家協助
第一次發文,如果有說明不清楚的地方再麻煩指教了~

IDE:VScode
Python版本:3.8.9

謝謝大家撥冗時間看完這篇文QQ

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
johncoc
iT邦新手 3 級 ‧ 2022-11-21 16:50:50

那是舊的寫法了
migration

# before
def setup(bot):
    bot.add_cog(MyCog(bot))

# after
async def setup(bot):
    await bot.add_cog(MyCog(bot))

我要發表回答

立即登入回答