嗨,我的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)
答案 0 :(得分:1)
您尝试访问某个对象的channels
属性,但是该对象为None
==其他语言中的Null。
在您的代码中,您唯一引用渠道的地方是message.guild.channels
,在channel = get(message.guild.channels, name="gtky")
行中,因此消息对象的guild
属性是None
答案 1 :(得分:0)
之所以会这样,是因为message.guild
是None
。 guild
之所以是None
,是因为私人消息(两个用户之间的直接消息)不会通过公会。
如果您的漫游器发送或接收任何私人消息,则这些消息将以None
作为其message.guild
属性。