【问题标题】:I can't run !giveaway command using heroku, but when I use cmd, all works good?我无法使用 heroku 运行 !giveaway 命令,但是当我使用 cmd 时,一切正常吗?
【发布时间】:2021-02-01 15:33:47
【问题描述】:

我在使用主机时无法使用 !giveaway 命令。

当我使用 cmd 运行此命令时,它运行良好,但是当我尝试使用 Heroku 主机运行此命令时,它不起作用并且 heroku logs 命令不返回我有任何错误。我不知道该怎么办。 如何解决?请帮帮我。

这里是命令代码:

@bot.command(aliases=["giveaway-start", "розыгрыш-начать"])
async def __giveaway_start(ctx, duration: int, sign: str, channel: discord.TextChannel, *, prize: str):

    with open('C:\\bot1\\giveaways.json', 'r') as f:
        givs = json.load(f)

    async def new_id(givs,g_id):
        if g_id in givs:
            new_g_id += random.choice(giveaway_id)

    giveaway_id = '1234567890'
    for n in range(1):
        g_id = ''
        for i in range(16):
            g_id += random.choice(giveaway_id)
            if g_id in givs:
                await ctx.send("Попробуйте позже")

    if sign == "с":
        wait = 1 * duration
    elif sign == "м":
        wait = 60 * duration
    elif sign == "ч":
        wait = 3600 * duration
    elif sign == "д":
        wait = 86400 * duration
    emoji = "????"
    if duration == 0:
        return
    embed = discord.Embed(title=prize, description=f"Автор - {ctx.author.mention}\n"f"**Нажмите на :tada: чтобы принять участие!**\n"f"Времени осталось: {wait} секунд",color=discord.Color.blue(),timestamp=datetime.utcnow())
    message = await channel.send(embed=embed)
    async def update_data(givs,g_away):
        if not g_away in givs:
            givs[g_away] = {}
            givs[g_away]["msg_id"] = message.id
    await ctx.send(f"Розыгрыш в канале {channel.mention} успешно создан! ID розыгрыша: `{g_id}`. Я напишу Вам в ЛС когда розыгрыш закончится.\nТак же можете присоединиться к нашему серверу тех. поддержки! https://discord.gg/YUzE6rB")
    await message.add_reaction(emoji)
    await update_data(givs,str(g_id))
    with open('C:\\bot1\\giveaways.json', 'w') as f:
        json.dump(givs,f)
    while wait:
        await asyncio.sleep(1)
        if wait == 0:
            await ctx.send("Giveaway is over!")
        else:
            wait -= 1
            if wait > 86400:
                cld = wait / 86400
                time = "дней"
                cooldown = round(cld, 1)
            elif wait > 3600:
                cld = wait / 3600
                time = "часов"
                cooldown = round(cld, 1)
            elif wait > 60:
                cld = wait / 60
                time = "минут"
                cooldown = round(cld, 1)
            else:
                cld = wait / 1
                time = "секунд"
                cooldown = round(cld, 1)
            embed.description = f"Автор - {ctx.author.mention}\n"f"**Нажмите на :tada: чтобы принять участие!**\n"f"Времени осталось: {cooldown} {time}"
            await message.edit(embed=embed)
    await asyncio.sleep(duration)
    message = await message.channel.fetch_message(message.id)
    reaction = get(message.reactions, emoji=emoji)
    users = [user async for user in reaction.users() if user.id != bot.user.id]
    if len(users) == 0:
        embed.description = f"Автор - {ctx.author.mention}\n"f"Нет победителей"
        await message.edit(embed=embed)
        return
    else:
        winner = random.choice(users)
        embed.description = f"**Автор - {ctx.author.mention}**\n"f"**Победитель - {winner.mention}**"
        await message.edit(embed=embed)
    embed_end=discord.Embed(color=discord.Color.gold())
    embed_end.add_field(name=f"Розыгрыш окончен!", value=f"[Ссылка на розыгрыш]({message.jump_url})", inline=False)
    await ctx.author.send(embed=embed_end)
    await channel.send(winner.mention, embed=embed)
    win_embed=discord.Embed(title="Вы победили в розыгрыше!", color=discord.Color.gold())
    win_embed.add_field(name=f"Вы выйграли: {prize}", value=f"[Ссылка на розыгрыш]({message.jump_url})",inline=False)
    await winner.send(embed=win_embed)

【问题讨论】:

  • 我不知道heroku,但我认为你不能像那样使用表情符号。你需要写它的代码

标签: python python-3.x heroku discord discord.py


【解决方案1】:

免费 Heroku 不支持 JSON 写入,因此您的命令不会被执行,因为它包含 json.dump

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-22
    • 1970-01-01
    • 2014-11-11
    相关资源
    最近更新 更多