【问题标题】:client.fetch_user() doesnt work when hosted on herokou for me为我托管在 herokou 上时,client.fetch_user() 不起作用
【发布时间】:2021-05-11 11:42:43
【问题描述】:

所以今天我正在测试一个排行榜命令,它对我有用,但是在将它托管到 herokou 之后它给了我这个错误:



2021-02-07T18:54:24.504724+00:00 heroku[worker.1]: State changed from crashed to starting

2021-02-07T18:54:27.000000+00:00 app[api]: Build succeeded

2021-02-07T18:54:27.747125+00:00 heroku[worker.1]: Starting process with command `python bot.py`

2021-02-07T18:54:28.379755+00:00 heroku[worker.1]: State changed from starting to up

2021-02-07T18:54:29.527430+00:00 app[worker.1]:   File "<fstring>", line 1

2021-02-07T18:54:29.527452+00:00 app[worker.1]:     ((await client.fetch_user(str(x[0]))).name)

2021-02-07T18:54:29.527458+00:00 app[worker.1]:                  ^

2021-02-07T18:54:29.527459+00:00 app[worker.1]: SyntaxError: invalid syntax

2021-02-07T18:54:29.574256+00:00 heroku[worker.1]: Process exited with status 1

2021-02-07T18:54:29.634600+00:00 heroku[worker.1]: State changed from up to crashed


对于 cotext,这里也是我的代码:

@client.command(aliases=['top'])
async def leaderboard(ctx):
    conn = sqlite3.connect('db.db')
    c = conn.cursor()
    c.execute(f"SELECT id, bal FROM main ORDER BY bal DESC LIMIT 10")
    result = c.fetchall()
    embed = discord.Embed(title="Leaderboards", colour=discord.Colour(0x6790a7))
    for i, x in enumerate(result, 1):
        embed.add_field(name=f"#{i}", value=f"**{(await client.fetch_user(str(x[0]))).name}** - {str(x[1])}$", inline=False)
    await ctx.send(embed=embed)
    c.close()
    conn.close()

当我尝试在我的电脑上运行我的机器人时,它工作正常,有什么想法吗?

【问题讨论】:

  • 您的 requirements.txt 文件中列出了所有正确的库供 Heroku 下载吗?
  • @AdityaTomar 客户端方法需要要求吗?
  • 好吧,不是特别是客户,而是 Discord 本身。在您的requirements.txt 文件中,根据运行代码所需的所有库,包括git+https://github.com/Rapptz/discord.pyPyNaCl==1.3.0dnspython==1.16.0pandas 等。
  • @AdityaTomar 在我添加之前它运行良好

标签: python heroku discord discord.py


【解决方案1】:

NVM,它不起作用,但我找到了另一种方法:

@client.command(aliases=['top'])
async def leaderboard(ctx):
    conn = sqlite3.connect('db.db')
    c = conn.cursor()
    c.execute(f"SELECT id, bal FROM main ORDER BY bal DESC LIMIT 10")
    result = c.fetchall()
    embed = discord.Embed(title="Leaderboards", colour=discord.Colour(0x6790a7))
    for i, x in enumerate(result, 1):
        name = (await client.fetch_user(str(x[0]))).name
        embed.add_field(name=f"#{i}", value=f"**{name}** - {str(x[1])}$", inline=False)
    await ctx.send(embed=embed)
    c.close()
    conn.close()

不想把它放在一行代码中,我添加了另一行,现在可以使用

【讨论】:

    猜你喜欢
    • 2013-09-24
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2017-07-25
    • 2018-07-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多