python-3.x discord.py @bot.命令()在通道中不工作,但DM正常

hc8w905p  于 2022-12-20  发布在  Python
关注(0)|答案(1)|浏览(120)

我用discord.py写了一个机器人。问题是它响应我的DM,但不响应我在频道中的消息。有人能帮我吗?

import discord
import requests
import urllib.request
import os
from io import BytesIO
from PIL import Image 
from discord.ext import commands

bot = commands.Bot(command_prefix='!')
@bot.event 
async def on_ready(): 
    print('We have logged in as {0.user}'.format(bot))

@bot.event 
async def on_message(message): 
    await bot.process_commands(message)

@bot.command() 
async def bothello(ctx): 
    print(ctx.channel) 
    if isinstance(ctx.channel, discord.DMChannel): 
        await ctx.send(f'DM') 
    elif isinstance(ctx.channel, discord.TextChannel): 
        print(ctx.channel.name) 
        await ctx.send(f'channel: {ctx.channel.name}') 
    else: 
        print("no way") 
    print('hello')

bot.run('MY_BOT_TOKEN')

我试着修改许可证,但没有用。

5ktev3wc

5ktev3wc1#

我猜您使用的是discord.py库,而不是它的fork,因为它在您的问题标签中。
所以,首先,看起来不像是在使用discord.py 2.0,因为你没有得到一个关于没有传递intents关键字参数的异常。确保你有一个最新的discord.py,尝试使用以下命令更新它:python -m pip install -U discord.py
第二,机器人不响应服务器中的命令是因为您没有2.0中新增的message_content特权意图;由于它没有Intent,因此无法访问服务器中发送的消息内容,因此您需要在开发门户和代码中启用它。示例(代码):

intents = discord.Intents.default()
intents.message_content = True

bot = commands.Bot(..., intents=intents)

您可能希望查看discord.py的指南,了解如何在此处的开发门户中启用Intent。

相关问题