为啥我的 discord.py 机器人不响应 on_message 事件?

Posted

技术标签:

【中文标题】为啥我的 discord.py 机器人不响应 on_message 事件?【英文标题】:Why does my discord.py bot not respond to the on_message event?为什么我的 discord.py 机器人不响应 on_message 事件? 【发布时间】:2021-06-15 00:48:33 【问题描述】:

我正在为 Minecraft 服务器的不和谐制作机器人。我在它下面有一个 on_member_join 事件和一个 on_message 事件。 on_member_join 工作得很好,但是当我在不和谐服务器中发送消息时,on_message 事件中没有任何事情发生。这是我的代码,如果有人有可能的解决方案,我将不胜感激。

import discord
import os
import datetime

intents = discord.Intents(members = True, guilds = True)
client = discord.Client(intents = intents)
yesterday = datetime.datetime.now() - datetime.timedelta(days=1)
joinList = []

@client.event
async def on_ready():
  global verify
  print('We have logged in as 0.user'.format(client))

@client.event
async def on_member_join(member):
  await client.get_channel(809271484475506698).send('Welcome, <@' + str(member.id) + '>! Please enter your main Minecraft username into this channel.')
  joinList.append(str(member.name))
  print(joinList)

@client.event
async def on_message(message):
  print('test')

  print(joinList)
  messages = await client.get_channel(809256065387462696).history(after = yesterday).flatten()

  if str(message.author.name) in joinList:
    for i in range(len(messages)):
      if message.content in str(messages[i]):
        print('success!')
        return

client.run(os.getenv('TOKEN'))

【问题讨论】:

print('test') 也不起作用吗? 不,我在发送消息后没有在控制台中得到任何东西 机器人是否拥有对该频道的完全访问权限? 【参考方案1】:

将此添加到程序的开头,以及其余的导入:from discord.utils import get。您需要包含此内容,因为您使用的是client.get_channel,这需要您先导入get

【讨论】:

我添加了那个,但它带有绿色下划线,它不能解决问题。 @Gabe Palmer 如果它以绿色突出显示,则表示您没有下载库。您可以通过在命令行中运行它来下载它:pip install DiscordUtils 我把它放在哪里? 您在命令行中运行它,也称为终端。 它什么也没做,如果有帮助的话,我正在使用 repl.it

以上是关于为啥我的 discord.py 机器人不响应 on_message 事件?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 discord.py 机器人在 Heroku 上托管时没有声音?

Discord.py - 如果命令被编辑,让我的机器人编辑他的响应

discord.py bot:on_message 检测机器人等待发送()消息

Discord.py 机器人:如何让我的不和谐机器人向我发送对用户在 DM 中使用的命令的响应,例如进行调查?

Discord.py 机器人不响应自定义表情符号

Discord.py 在事件之外发送消息