import os
import discord
from discord import Intents
from dotenv import load_dotenv
from chatbot import ChatBot

load_dotenv()
discord_token = os.getenv('DISCORD_TOKEN')

chatbot = ChatBot()

intents = Intents.default()
intents.typing = False
intents.presences = False
intents.messages = True  # Enable the messages intent

client = discord.Client(intents=intents)


chat_history = []

@client.event
async def on_ready():
    print(f'We have logged in as {client.user}')

@client.event
async def on_message(message):
    print("Received a message")  # Add this line
    if message.author == client.user:  # Ignore messages from the bot itself
        return
    print('Received message:', message)
    print(f"Received message content: {message.clean_content}")
    if message.content.startswith('/ask'):
        user_input = message.content[5:].strip()
        print('User input: ', repr(user_input))
        print('Received user input: {}'.format(user_input)) # Print the user's question to the console
        response = chatbot.get_response(user_input, chat_history)
        await message.channel.send(response)




client.run(discord_token)

控制台:

我们已以Ask-Bot#1060身份登录 收到一条消息 收到的消息:<消息id=1117888736563306637频道=类型=<消息类型.默认:0&>;作者=<成员id=940462143654998096名称=‘Dane W’鉴别器=‘4497’机器人=假nick=无公会=>标志=> 收到的消息内容:

我在discord一词中输入了"/ask tell me about the striking offense of brandon moreno".我希望我的控制台将该值作为Message.content返回.

Discorde机器人已经被授予了所有必要的权限,并且存在于我要输入消息的频道中.

推荐答案

您的代码中缺少intents.message_content = True. intents.messages分已经不够了.

点击此处了解更多信息:message_content

Python相关问答推荐

如何将带有逗号分隔的数字的字符串解析为int Array?

在Windows上启动新Python项目的正确步骤顺序

按照行主要蛇扫描顺序对点列表进行排序

返回nxon矩阵的diag元素,而不使用for循环

Pandas 第二小值有条件

使用SciPy进行曲线匹配未能给出正确的匹配

Odoo 14 hr. emergency.public内的二进制字段

如何使用html从excel中提取条件格式规则列表?

可变参数数量的重载类型(args或kwargs)

如何在Python数据框架中加速序列的符号化

在Python中动态计算范围

如何从pandas的rame类继承并使用filepath实例化

如果初始groupby找不到满足掩码条件的第一行,我如何更改groupby列,以找到它?

在不同的帧B中判断帧A中的子字符串,每个帧的大小不同

从旋转的DF查询非NaN值

从源代码显示不同的输出(机器学习)(Python)

如何在Python 3.9.6和MacOS Sonoma 14.3.1下安装Pyregion

如何在信号的FFT中获得正确的频率幅值

SpaCy:Regex模式在基于规则的匹配器中不起作用

Polars时间戳同步延迟计算