Discord Bot不响应命令(Python)

时间:2020-11-05 07:17:35

标签: python command discord bots

我刚刚开始写不和谐的机器人。在尝试遵循在线说明和教程时,我的机器人无法响应命令。它对on_message()的响应非常好,但是无论我尝试什么,它都不会响应命令。我敢肯定这很简单,但我会感谢您的帮助。

import discord
from discord.ext.commands import Bot
from discord.ext import commands

bot = commands.Bot(command_prefix='$')
TOKEN = '<token-here>'

@bot.event
async def on_ready():
    print(f'Bot connected as {bot.user}')
    
@bot.event
async def on_message(message):
    if message.content == 'test':
        await message.channel.send('Testing 1 2 3')
        
@bot.command(name='go')
async def dosomething(ctx):
    print("command called") #Tried putting this in help in debugging
    await message.channel.send("I did something")


        
bot.run(TOKEN)

Picture of me prompting the bot and the results

2 个答案:

答案 0 :(得分:2)

一开始我犯了同样的错误。

@bot.event
async def on_message(message):
    if message.content == 'test':
        await message.channel.send('Testing 1 2 3')

此函数会覆盖on_message事件,因此永远不会发送给bot.command()

要解决此问题,您只需在on_message函数的末尾添加await bot.process_commands(message):

async def on_message(message):
    if message.content == 'test':
        await message.channel.send('Testing 1 2 3')
    await bot.process_commands(message)

尚未经过测试,但这应该可以解决您的问题。

答案 1 :(得分:0)

好的。首先,顶部唯一需要的import语句是on_message()。其他两个不是必需的。

第二,我尝试自己弄乱您的代码,发现on_message()函数似乎会干扰命令,因此将其删除应该会有帮助。

第三,我只有在复制自己的一个工作机器人并慢慢更改所有代码直到与您的代码完全相同时才发现这一点。由于某些原因,当我刚复制并粘贴您的代码时,python不喜欢它。我以前从未见过这样的内容,所以老实说,我不知道该说些什么,除非您的代码是正确的,并且只要您将from discord.ext import commands bot = commands.Bot(command_prefix="$") TOKEN = "<token-here>" @bot.event async def on_ready(): print(f'Bot connected as {bot.user}') @bot.command() async def dosomething(ctx): await ctx.send("I did something") bot.run(TOKEN) 函数删除就可以正常工作。

这是我工作的最终代码:

on_message()

您可以看到,我对代码所做的更改仅是删除了顶部的冗余导入,并删除了discord.py函数。在我这端,它的工作方式非常完美,因此,我建议您像这样在新文件中重新输入内容,看看是否可行。

如果这对您不起作用,那么我的下一个猜测是安装s_Title.innerHTML = "mySlider"; dragSlider(document.getElementById("mySlider")); var maxPos = document.getElementById("s_Groove").offsetTop - (s_Lever.offsetHeight/2); var minPos = document.getElementById("s_Groove").offsetTop + document.getElementById("s_Groove").offsetHeight - (s_Lever.offsetHeight/2); // Initialize SP value document.getElementById("s_SP").innerHTML = s_Lever.offsetTop; function dragSlider() { let start_Pos = 0; let final_Pos = 0; document.getElementById("s_Lever").onmousedown = dragMouseDown; function dragMouseDown(e) { e = e || window.event; e.preventDefault(); // get the mouse cursor position at startup: start_Pos = e.clientY; document.onmouseup = closeDragElement; // call a function whenever the cursor moves: document.onmousemove = elementDrag; } function elementDrag(e) { let new_Pos = 0; document.getElementById("s_SP").innerHTML = e.clientY; e = e || window.event; e.preventDefault(); // calculate the new cursor position: final_Pos = start_Pos - e.clientY; start_Pos = e.clientY; new_Pos = s_Lever.offsetTop - final_Pos // set the element's new position: if(new_Pos <= maxPos) { s_Lever.style.top = maxPos + "px"; } else if(new_Pos >= minPos) { s_Lever.style.top = minPos + "px"; } else { s_Lever.style.top = new_Pos + "px"; } } function closeDragElement() { // stop moving when mouse button is released: document.onmouseup = null; document.onmousemove = null; } }时出现问题,因此您可以尝试将其卸载然后重新安装。

如果这些方法都无法让我知道,我会看看是否可以帮助您找到可能导致问题的其他原因。