RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1317301
Accepted
Woron
Woron
Asked:2022-08-13 21:18:52 +0000 UTC2022-08-13 21:18:52 +0000 UTC 2022-08-13 21:18:52 +0000 UTC

赠品 Discord.py 命令不起作用

  • 772

我在网上看到了赠品命令,我决定检查一下这段代码的本质,问了3个问题,回答了第一个问题后,发出了第二个问题。但问题是第一个问题之后,第二个问题没有发出。代码取自此视频:https ://www.youtube.com/watch?v=QT4jolyyxVA&t=632s

这是代码:

def convert(time):
    pos = ["s","m","h","d"]

    time_dict = {"s" : 1, "m" : 60, "h" : 3600, "d": 3600*24}

    unit = time[-1]

    if unit not in pos:
        return -1
    try:
        val = int(time[:-1])
    except:
        return -2

    return val * time_dict[unit]

@client.command()
@commands.has_permissions(administrator=True)
async def giveaway(ctx):
    await ctx.send("Начнем с этой раздачи! Ответьте на эти вопросы в течение 15 секунд!")

    questions = ["На каком канале он должен быть размещен?", "Какова должна быть продолжительность розыгрыша призов? (s|m|h|d)", "Какой приз в розыгрыше?"]

    answers = []

    def check(m):
        return m.author == ctx.author and m.channel == ctx.channel

    for i in questions:
        await ctx.send(i)

        try:
            msg = await client.wait_for('messsage', timeout=15.0, check=check)
        except asyncio.TimeoutError:
            await ctx.send('Вы не ответили вовремя, пожалуйста, в следующий раз поторопитесь!')
            return
        else: 
            answers.append(msg.content)

    try:
        c_id = int(answers[0][2:-1])
    except:
        await ctx.send(f"Вы неправильно упомянули канал. Делайте это так {ctx.channel.mention} в следующий раз.")
        return

    channel = client.get_channel(c_id)

    time = convert(answers[1])
    if time == -1:
        await ctx.send(f"Вы не ответили правильным блоком. В следующий раз используйте (s|m|h|d)!")
        return
    elif time == -2:
        await ctx.send(f"Время должно быть целым числом. Пожалуйста, введите в следующий раз целое число.")
        return
  
    prize = answers[2]

    await ctx.send(f"Розыгрыш будет через {channel.mention} и будет длиться {answers[1]} секунды!")

    embed = discord.embed(title = "Раздача!", description = f"{prize}", color = ctx.author.color)

    embed.add_field(name = "Создал:", value = ctx.author.mention)

    embed.set_footer(text = f"Заканчивается {answers[1]} ")

    my_msg = await channel.send(embed = embed)

    await my_msg.add_reaction("🎉")

    await asyncio.sleep(time)

    new_msg = await channel.fetch_message(my_msg.id)

    users = await new_msg.reactions[0].users().flatten()
    users.pop(users.index(client.user))

    winner = random.choice(users)

    await channel.send(f"Поздравляю! {winner.mention} выиграл приз: {prize}!")

@client.command()
@commands.has_permissions(kick_members=True)
async def reroll(ctx, channel : discord.TextChannel, id_ : int):
    try:
        new_msg = await channel.fetch_message(id_)
    except:
        await ctx.send("Введенный идентификатор был неверным, убедитесь, что вы ввели правильный идентификатор сообщения с раздачей.")
        return   
    users = await new_msg.reactions[0].users().flatten()
    users.pop(users.index(client.user))

    winner = random.choice(users)

    await channel.send(f"Поздравляем нового победителя: {winner.mention} розыгрыша!")
discord-py
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    denisnumb
    2022-08-14T06:23:12Z2022-08-14T06:23:12Z

    message您在指定的参数中有这一行meSSSage:)

    msg = await client.wait_for('messsage', timeout=15.0, check=check)
    

    删除多余的s


    然后您将遇到另一个错误,因为在这一行中您指定了一个Embed带有小写字母的对象。

    embed = discord.embed(title="Раздача!", description=f"{prize}", color=ctx.author.color)
    

    这将是正确的:

    embed = discord.Embed(title="Раздача!", description=f"{prize}", color=ctx.author.color)
    
    • 0

相关问题

  • 如何创建 discord.py 每日奖励团队?

  • ModuleNotFoundError:没有名为“discord_components”的模块

  • embed.set_footer Discord.py 未显示

  • 仅在一个通道中执行命令

  • 嵌入的奇怪错误

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    表格填充不起作用

    • 2 个回答
  • Marko Smith

    提示 50/50,有两个,其中一个是正确的

    • 1 个回答
  • Marko Smith

    在 PyQt5 中停止进程

    • 1 个回答
  • Marko Smith

    我的脚本不工作

    • 1 个回答
  • Marko Smith

    在文本文件中写入和读取列表

    • 2 个回答
  • Marko Smith

    如何像屏幕截图中那样并排排列这些块?

    • 1 个回答
  • Marko Smith

    确定文本文件中每一行的字符数

    • 2 个回答
  • Marko Smith

    将接口对象传递给 JAVA 构造函数

    • 1 个回答
  • Marko Smith

    正确更新数据库中的数据

    • 1 个回答
  • Marko Smith

    Python解析不是css

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5