AttributeError: 'NoneType' object has no attribute 'channels'

AttributeError: 'NoneType' object has no attribute 'channels'

您好,我的 Discord 机器人模块有问题。我得到 AttributeError: 'NoneType' object has no attribute 'channels' 我不确定它是如何抛出这个错误的:

这是我正在处理的内容:

from discord.ext import commands
from discord.utils import get
import logging as log
from datetime import datetime,timedelta
import discord
import os
from .utils import checks
from run import UKGBot


import asyncio


class Pinner():
    """Pins messages to a specific channel."""

    def __init__(self, bot: UKGBot):
        self.bot = bot



    async def on_message(self, message):
        """Listen for message then pin it"""
        try:
            guild = message.guild
            channel = get(message.guild.channels, name="gtky")
            pins = await message.channel.pins()
            if message.channel == channel and message.type != discord.MessageType.pins_add:
                if len(pins) == 20:
                    await message.unpin(pins[-1])
                await asyncio.sleep(3) 
                await message.pin()

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


    def setup(bot):
        """Setup function"""
        to_add = Pinner(bot)
        bot.add_listener(to_add.on_message, 'on_message')
        bot.add_cog(to_add)

这是因为 message.guildNoneguildNone 因为私人消息,两个用户之间的直接消息,不通过公会。

如果您的机器人发送或接收任何私人消息,这些消息将具有 None 作为它们的 message.guild 属性。

您正在尝试访问某个对象的 channels 属性,但该对象在其他语言中是 None == Null。

从您的代码中,您引用频道的唯一位置是 message.guild.channels,在 channel = get(message.guild.channels, name="gtky") 行中,因此消息对象的 guild 属性 是 None