为什么我的Discord机器人程序返回message.content为空?

huangapple go评论98阅读模式
英文:

Why is my Discord Bot program returning message.content as empty?

问题

以下是代码的翻译部分:

  1. import os
  2. import discord
  3. from discord import Intents
  4. from dotenv import load_dotenv
  5. from chatbot import ChatBot
  6. load_dotenv()
  7. discord_token = os.getenv('DISCORD_TOKEN')
  8. chatbot = ChatBot()
  9. intents = Intents.default()
  10. intents.typing = False
  11. intents.presences = False
  12. intents.messages = True # 启用消息意图
  13. client = discord.Client(intents=intents)
  14. chat_history = []
  15. @client.event
  16. async def on_ready():
  17. print(f'已登录为 {client.user}')
  18. @client.event
  19. async def on_message(message):
  20. print("收到消息") # 添加此行
  21. if message.author == client.user: # 忽略来自机器人自身的消息
  22. return
  23. print('收到消息:', message)
  24. print(f"收到消息内容: {message.clean_content}")
  25. if message.content.startswith('/ask'):
  26. user_input = message.content[5:].strip()
  27. print('用户输入: ', repr(user_input))
  28. print('收到用户输入: {}'.format(user_input)) # 打印用户的问题到控制台
  29. response = chatbot.get_response(user_input, chat_history)
  30. await message.channel.send(response)
  31. client.run(discord_token)

控制台输出:

已登录为 ask-Bot#1060
收到消息
收到消息: <Message id=1117888736563306637 channel= type=<MessageType.default: 0> author=<Member id=940462143654998096 name='Dane W' discriminator='4497' bot=False nick=None guild=> flags=>

我在Discord中输入“/ask tell me about the striking offense of brandon moreno”。我期望我的控制台返回该值作为message.content。

Discord机器人已被授予所有必要的权限,并存在于我要发送消息的频道中。

英文:
  1. import os
  2. import discord
  3. from discord import Intents
  4. from dotenv import load_dotenv
  5. from chatbot import ChatBot
  6. load_dotenv()
  7. discord_token = os.getenv(&#39;DISCORD_TOKEN&#39;)
  8. chatbot = ChatBot()
  9. intents = Intents.default()
  10. intents.typing = False
  11. intents.presences = False
  12. intents.messages = True # Enable the messages intent
  13. client = discord.Client(intents=intents)
  14. chat_history = []
  15. @client.event
  16. async def on_ready():
  17. print(f&#39;We have logged in as {client.user}&#39;)
  18. @client.event
  19. async def on_message(message):
  20. print(&quot;Received a message&quot;) # Add this line
  21. if message.author == client.user: # Ignore messages from the bot itself
  22. return
  23. print(&#39;Received message:&#39;, message)
  24. print(f&quot;Received message content: {message.clean_content}&quot;)
  25. if message.content.startswith(&#39;/ask&#39;):
  26. user_input = message.content[5:].strip()
  27. print(&#39;User input: &#39;, repr(user_input))
  28. print(&#39;Received user input: {}&#39;.format(user_input)) # Print the user&#39;s question to the console
  29. response = chatbot.get_response(user_input, chat_history)
  30. await message.channel.send(response)
  31. client.run(discord_token)

Console:

We have logged in as ask-Bot#1060
Received a message
Received message: <Message id=1117888736563306637 channel=<TextChannel id=1117859481070616641 name='general' position=0 nsfw=False news=False category_id=1117859481070616638> type=<MessageType.default: 0> author=<Member id=940462143654998096 name='Dane W' discriminator='4497' bot=False nick=None guild=<Guild id=1117859480428871700 name="Dane W's Server" shard_id=0 chunked=False member_count=2>> flags=<MessageFlags value=0>>
Received message content:

I typed "/ask tell me about the striking offense of brandon moreno" into Discord. I expected my console to return that value as message.content.

The Discord bot has been given all necessary permissions and exists in the channel I am typing to message into.

答案1

得分: 1

你的代码中缺少 intents.message_content = True
intents.messages 不再足够。

在这里了解更多信息:message_content

英文:

You are missing intents.message_content = True in your code.
intents.messages is not enough anymore.

Find out more about it here: message_content

huangapple
  • 本文由 发表于 2023年6月13日 02:54:09
  • 转载请务必保留本文链接:https://go.coder-hub.com/76459518.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定