discord.py rewrite: TypeError: cogs должен быть производным от Cog - PullRequest
0 голосов
/ 19 марта 2019

Поскольку мой бот становится больше, я пытаюсь реализовать Cogs, однако я столкнулся с проблемой.У меня весь код настроен и готов, но по какой-то странной причине я продолжаю получать эту ошибку:

    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.Спасибо!

Ответы [ 2 ]

1 голос
/ 16 апреля 2019

Рекомендую проверить https://discordpy.readthedocs.io/en/latest/ext/commands/cogs.html Это поможет вам лучше понять Cogs.

Во-первых, вам нужно изменить 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):

Я рекомендую быть в курсе изменений, когда появляются новые обновления для переписанной версии. Вот быстрый взгляд на пример рабочего файла cog. . Надеюсь, это помогло! Макс.

0 голосов
/ 19 марта 2019

Спасибо @Ellisein за помощь со строкой кода class FunCog(commands.Cog):. Еще одна вещь, которая помогла мне исправить код, заключалась в замене bot.add_cog("cogs.fun") в main.py на bot.load_extension("cogs.fun")!

...