Python 不响应命令的不和谐机器人

A Python discord bot not responding to a command

我尝试制作一个不和谐的机器人并偶然发现了一个问题,该机器人不响应命令而且我不知道哪里出了问题。 这是我的代码

import discord
from discord.ext import commands
class MyClient(discord.Client):
    async def on_ready(self):
        print('Logged on as {0}!'.format(self.user))
        await client.change_presence(activity=discord.Game(name="Python"))

    async def on_message(self, message):
        print('Message from {0.author}: {0.content}'.format(message))
        await bot.process_commands(message)


client = MyClient()
client.run("Token Here")
bot = commands.Bot(command_prefix='!')

@bot.command()
async def test(ctx):
    await ctx.send("Sup")

您目前正在混合 discord.Clientcommands.bot。 Discord.py 提供了多种方法来创建彼此不兼容的机器人。

此外,client.run 正在阻塞,应该在脚本的末尾。!

import discord
from discord.ext import commands


class MyClient(commands.Bot):
    async def on_ready(self):
        print('Logged on as {0}!'.format(self.user))
        await client.change_presence(activity=discord.Game(name="Python"))

    async def on_message(self, message):
        print('Message from {0.author}: {0.content}'.format(message))
        await self.process_commands(message)


client = MyClient(command_prefix='!')


@client.command()
async def test(ctx):
    await ctx.send("Sup")


client.run("...")


请注意,您没有义务提交 class 图书馆提供的 commands.Bot class。

这是另一个不使用 subclassing 的例子:

import discord
from discord.ext import commands


client = commands.Bot(command_prefix='!')


@client.event
async def on_ready():
    print('Logged on as {0}!'.format(client.user))
    await client.change_presence(activity=discord.Game(name="Python"))


@client.event
async def on_message(message):
    print('Message from {0.author}: {0.content}'.format(message))
    await client.process_commands(message)


@client.command()
async def test(ctx):
    await ctx.send("Sup")


client.run("...")

如果您刚开始学习 dpy,使用第二种方法可能会有所帮助,并且在您没有很多命令时也可以使用。 但是,对于更大的项目,第一种方法将有助于通过对命令和事件使用齿轮来组织您的机器人。