【问题标题】:Commands with arguments using Discord.py使用 Discord.py 的带有参数的命令
【发布时间】:2020-03-24 04:33:59
【问题描述】:
import discord
from discord.ext.commands import Bot
from discord.ext import commands
import asyncio
import time
import random
from PIL import Image

Client = discord.Client()
client = commands.Bot(command_prefix = "-")`
@client.command
async def spam(ctx, arg):
    count = 0 
    await Context.send(message.channel, "Wait for it....")
    time.sleep(3)
    while count < 20:
        await ctx.send(arg)
        time.sleep(3)
        count = count + 1

这段代码应该提到参数中指定的人。例如,如果有人输入-spam @Bob,机器人应该说

@Bob
@Bob 20 times

【问题讨论】:

  • 那么问题出在哪里?你的程序的实际结果是什么?我猜该命令触发正确,但您的机器人的响应不是。您只是将 play 参数发回。如果您想提及用户,请使用提及权。一个例子可以在这里找到stackoverflow.com/questions/51905563/…
  • 我的问题是它实际上并没有打印任何东西,包括“等待它......”
  • 您确定您的机器人正在运行吗?您的代码缺少 client.run('token') 之类的东西,它会启动机器人。此外,您还没有定义Context,但您使用它。也许这应该是ctx?你使用的是哪个版本的discord.py?
  • 哦,是的,它正在运行,我忘了添加它,但在我的实际代码中它就在那里。其他一切正常,只是这个命令有点粗略。

标签: python discord.py


【解决方案1】:

无需同时实例化discord.Client 和commands.Bot。 Bot 是 Client 的子类。

Bot.command 是一个返回装饰器的函数,而不是它本身的装饰器。您需要调用它来使用它来装饰协程:

@client.command()

您可能应该使用 converter 来获取您正在 ping 的用户。

Context 是 ctx 的一个实例的类。您应该通过ctx 访问所有方法。

不要使用time.sleep,因为它会阻塞事件循环。请等待asyncio.sleep。

from discord.ext.commands import Bot
from asyncio import sleep
from discord import User

client = Bot(command_prefix = "-")

@client.command()
async def spam(ctx, user: User):
    await ctx.send("Wait for it....")
    await sleep(3)
    for _ in range(20):
        await ctx.send(user.mention)
        await sleep(3)

client.run("token")

【讨论】:

  • 感谢您帮助我。 time.sleep 确实引起了我的问题。上面的代码收到用户错误:用户异步def spam(ctx,用户:用户):NameError:未定义名称'用户'我试图让我的代码做的是ping参数中指定的人20次.对不起,如果我不清楚。
  • 您是否添加了from discord import User 行?
  • 糟糕!我忘了包括那个。
  • 我通过添加我忘记的from 行来测试这个。我没有收到错误消息,但机器人实际上并没有发送消息。对不起,如果我犯了一个简单的错误,我是 python 新手。这是我的代码:pastebin.com/gr00DfVK
  • 您需要指定您使用的是哪个sleep,并且您还需要实际运行您的机器人client.run(...)
猜你喜欢
  • 2021-01-26
  • 2021-09-26
  • 2021-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-25
  • 2020-11-24
  • 2021-04-20
相关资源
最近更新 更多