【问题标题】:discord.py when creating group gives AttributeError创建组时 discord.py 给出 AttributeError
【发布时间】:2019-01-30 00:04:56
【问题描述】:

我正在尝试制作一个可以执行 reddit 功能的不和谐机器人。我决定把它做成一个有帮助功能的小组,和一个有共同功能的共同小组。

# reddit group commands
@function_debug
@bot.group(pass_context = True)
async def reddit(context):
    message = context.message
    logger.debug(message.content)
    try:
        if message.server.name == 'PeaceCrafters' and message.channel.name == 'utilbots':
            cont = True
        elif message.server.name != 'PeaceCrafters':
            cont = True
        else:
            cont = False
    except AttributeError:
        cont = True
    finally:
        if cont:
            if context.invoked_subcommand is None:
                await reddit_help()


@function_debug
@reddit.command(name = 'help', description = 'Provides help with reddit', pass_context = True)
async def reddit_help(context):
    message = context.message
    logger.debug(message.content)
    try:
        if message.server.name == 'PeaceCrafters' and message.channel.name == 'utilbots':
            cont = True
        elif message.server.name != 'PeaceCrafters':
            cont = True
        else:
            cont = False
    except AttributeError:
        cont = True
    finally:
        if cont:
            message = reddit_message
            await bot.say(message)


@function_debug
@reddit.group(pass_context = True)
async def subreddit(context):
    message = context.message
    logger.debug(message.content)
    try:
        if message.server.name == 'PeaceCrafters' and message.channel.name == 'utilbots':
            cont = True
        elif message.server.name != 'PeaceCrafters':
            cont = True
        else:
            cont = False
    except AttributeError:
        cont = True
    finally:
        if cont:
            info = message.content.split(' ')[1:]
            subreddit = info[0]

@function_debug
@subreddit.command(name = 'hot', description = 'Lists the hot commands in the subreddit', pass_context = True)
async def subreddit_hot(context):
    message = context.message
    logger.debug(message.content)
    try:
        if message.server.name == 'PeaceCrafters' and message.channel.name == 'utilbots':
            cont = True
        elif message.server.name != 'PeaceCrafters':
            cont = True
        else:
            cont = False
    except AttributeError:
        cont = True
    finally:
        if cont:
            pass #i will add more once i figure out how message.content is handled

但是,每当我运行代码时,我都会收到此错误:

Traceback (most recent call last):
  File "*/main.py", line 447, in <module>
    @reddit.group(name = 'reddit', pass_context=True)
AttributeError: 'function' object has no attribute 'group'
Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x00000223C92FFEF0>

我在网上查看了其他人如何对他们的组进行编码,据此我的代码应该是有效的。为什么会出现这个错误?

【问题讨论】:

  • 你使用的是什么 discord.py 版本

标签: python python-3.x python-3.6 discord discord.py


【解决方案1】:

发生这种情况是因为您的 @function_debug 装饰器返回的是 function,而不是 group。重写装饰器返回一个协程并切换装饰器的顺序。

@bot.group(pass_context = True)
@function_debug

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 2018-07-28
    • 2020-12-03
    • 1970-01-01
    • 2020-12-21
    • 2021-05-16
    • 1970-01-01
    相关资源
    最近更新 更多