Discord.py AttributeError: у объекта «Context» нет атрибута «server» - PullRequest
0 голосов
/ 16 сентября 2018

Привет, у меня возникла проблема, из-за которой я получаю сообщение об ошибке AttributeError: у объекта 'Context' нет атрибута 'server', однако, как я добавил ctx.server: в свой код. Я думал, что это сработает, хотя мне не хватало ctx в подписи сопрограммы.

Вот как я пытаюсь это сделать.

@commands.command(pass_context=True, no_pm=True)                
async def unpin(self, ctx):
    """Listen for a message then unpin any other messages older than 7 days"""
    server = ctx.server
    messages = await self.bot.pins_from(self.bot.get_channel('490899209067823135'))
    if server:
        for msg in messages:
            if (datetime.now() - msg.timestamp).days > 7:
                try:
                   await self.bot.unpin_message(msg)
                   print ("Unpinned")

                except discord.Forbidden:
                   print("No permissions to do that!")

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Вы можете использовать channel = self.bot.get_channel()

Вот что я сделал для тебя. Обратите внимание, что Discord ограничивает вас до 50 выводов на канал, поэтому вам потребуется краткая проверка, чтобы оценить, есть ли в канале место для входящего вывода.

async def on_message(self, message):
    """Listen for message then pin it"""
    try:
        server = message.server
        channel = self.bot.get_channel('1234567890') 
        pins = await self.bot.pins_from(channel)
        if message.channel == channel and message.type != 
          discord.MessageType.pins_add:
            if len(pins) == 50:
                await self.bot.unpin_message(pins[-1])
            await self.bot.pin_message(message)            

    except discord.Forbidden:
        print("No permissions to do that!")
0 голосов
/ 16 сентября 2018

Используйте ctx.message.server вместо
Согласно документации Context не имеет атрибута server

...