ボットが大きくなるにつれて、歯車を実装しようとしていますが、問題が発生しました。コード全体をセットアップして準備ができましたが、奇妙な理由で次のエラーが発生し続けます。
Traceback (most recent call last):
File "C:\Users\Lauras\Desktop\Akagi Bot\main.py", line 107, in <module>
bot.add_cog("cogs.fun")
File "C:\Users\Lauras\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\ext\commands\bot.py", line 477, in add_cog
raise TypeError('cogs must derive from Cog')
TypeError: cogs must derive from Cog
Main.pyの私のコードは次のようになります:
import discord
import asyncio
import typing
import random
import json
import oauth
from discord.ext import commands
bot = commands.Bot(command_prefix='~')
@bot.event
async def on_ready():
await bot.change_presence(activity=discord.Activity(name='with Kaga :3',type=0))
print (discord.__version__)
print(f"{bot.user.name} - {bot.user.id}")
print ('Akagi is ready to serve the Commander :3 !')
bot.add_cog("cogs.fun")
bot.run(oauth.bot_token)
そして、「楽しい」歯車は次のとおりです。
import discord
from discord.ext import commands
bot = commands.Bot(command_prefix='~')
class FunCog:
def __init__(self, bot):
self.bot = bot
@commands.command()
async def hug(self, ctx):
await ctx.send('has been hugged by', file=discord.File('iloveyou.gif'))
pass
def setup(bot: commands.Bot):
bot.add_cog(FunCog(bot))
何が問題なのですか?私もdiscord.pyリライトを使用しています。ありがとう!
チェックアウトすることをお勧めします https://discordpy.readthedocs.io/en/latest/ext/commands/cogs.html これは、歯車をよりよく理解するのに役立ちます。
まず、bot.add_cog("cogs.fun")
をbot.load_extension("cogs.fun")
に変更する必要があります
これは必須ではありませんが、bot
を再度定義する必要はありません。 def setup(bot: commands.Bot):
をdef setup(bot):
に変更します
また、_class FunCog:
_をclass FunCog(commands.Cog):
に変更する必要があります。
リライトバージョンの新しいアップデートが出たときは、変更を常に最新の状態に保つことをお勧めします。 作業用歯車ファイル の例を簡単に見てみましょう。これがお役に立てば幸いです。最大.
class FunCog(commands.Cog):
コード文字列を手伝ってくれた@Elliseinに感謝します。コードを修正するのに役立ったもう1つのことは、main.pyのbot.add_cog("cogs.fun")
をbot.load_extension("cogs.fun")
に置き換えることでした。