AttributeError: 'NoneType' 对象没有属性 '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)


慕后森
浏览 571回答 2
2回答

浮云间

您正在尝试访问channels某个对象的属性,但该对象None在其他语言中是== Null。从您的代码中,您引用通道的唯一位置是message.guild.channels,channel = get(message.guild.channels, name="gtky")在行中,因此guild消息对象的属性是None

慕标琳琳

发生这种情况是因为message.guild是None。 guild是None因为私人消息,两个用户之间的直接消息,不经过公会。如果您的机器人发送或接收任何私人消息,这些消息将None作为其message.guild属性。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python