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.guild
是 None
。 guild
是 None
因为私人消息,两个用户之间的直接消息,不通过公会。
如果您的机器人发送或接收任何私人消息,这些消息将具有 None
作为它们的 message.guild
属性。
您正在尝试访问某个对象的 channels
属性,但该对象在其他语言中是 None
== Null。
从您的代码中,您引用频道的唯一位置是 message.guild.channels
,在 channel = get(message.guild.channels, name="gtky")
行中,因此消息对象的 guild
属性 是 None
您好,我的 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.guild
是 None
。 guild
是 None
因为私人消息,两个用户之间的直接消息,不通过公会。
如果您的机器人发送或接收任何私人消息,这些消息将具有 None
作为它们的 message.guild
属性。
您正在尝试访问某个对象的 channels
属性,但该对象在其他语言中是 None
== Null。
从您的代码中,您引用频道的唯一位置是 message.guild.channels
,在 channel = get(message.guild.channels, name="gtky")
行中,因此消息对象的 guild
属性 是 None