AttributeError:'BotClient'对象没有声明实例的属性'循环' [英] AttributeError: 'BotClient' object has no attribute 'loop' with declaring an instance

查看:46
本文介绍了AttributeError:'BotClient'对象没有声明实例的属性'循环'的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

尝试用Python编写不和谐的机器人,尽管有困难。当前收到错误";AttributeError:‘BotClient’对象没有属性‘loop’";。我在发帖前已经查过了,这似乎是因为我没有声明类的实例,但我是这样做的(参见最后两行代码)……除非有其他不正确的地方?

当前代码如下:

class BotClient(discord.Client):

def __init__(self, prefix, current_game):
    self.pfx = prefix
    self.curr_game = current_game

async def on_ready(self):
    print(f'{self.user} has connected to Discord!')
    await self.change_presence(status=discord.Status.idle, activity=self.curr_game)

#@self.event
async def on_message(self, message):
    if message.author == self.user:
        return

    if message.content.startswith('%s hello' % self.pfx):
        await message.channel.send('very naisu caesar-chan')

load_dotenv()
TOKEN = os.getenv('DISCORD_TOKEN')
CHANNEL = os.getenv('CHANNEL_TOKEN')
CUR_GAME = os.getenv('GAME_ENV')

RockBot = BotClient(".rb", CUR_GAME)
RockBot.run(TOKEN)

推荐答案

您正在修改扩展到类discord.Client__init__()函数。显然,您需要在类discord.Client内初始化__init()__,因为新的init函数覆盖了不一致的init函数(也称为超类init函数)。这应该是相当容易修复的。只需在新的init函数中对其进行初始化即可:

class BotClient(discord.Client):

    def __init__(self, prefix, current_game, *args, **kwargs):
        self.pfx = prefix
        self.curr_game = current_game
        super().__init__(*args, **kwargs)
    
    async def on_ready(self):
        print(f'{self.user} has connected to Discord!')
        await self.change_presence(status=discord.Status.idle, activity=self.curr_game)
    
    #@self.event
    async def on_message(self, message):
        if message.author == self.user:
            return
    
        if message.content.startswith('%s hello' % self.pfx):
            await message.channel.send('very naisu caesar-chan')

load_dotenv()
TOKEN = os.getenv('DISCORD_TOKEN')
CHANNEL = os.getenv('CHANNEL_TOKEN')
CUR_GAME = os.getenv('GAME_ENV')

RockBot = BotClient(".rb", CUR_GAME)
RockBot.run(TOKEN)

这篇关于AttributeError:'BotClient'对象没有声明实例的属性'循环'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆