python - 当成员不在 JSON 文件中时,Discord.py 机器人无法发送消息
问题描述
@bot.command()
async def coincount(ctx,*, member: discord.Member = None):
member = ctx.author if not member else member
member_id = str(member.id)
with open('users.json', 'r') as f:
users = json.load(f)
coins = users[member_id]['coins']
if member_id in users:
if coins > 1:
await ctx.send(f'{member.mention} has {coins} coins.')
if coins == 1:
await ctx.send(f'{member.mention} has {coins} coin.')
else:
await ctx.send(f'{member.mention} has no coins.')
没有追溯。如果成员在文件中,则机器人会发送适当的消息,但如果不在文件中,则不会执行任何操作。
解决方案
如果成员 ID 不在您的 JSON 文件中,coins = users[member_id]['coins']
则将引发KeyError
.
您应该将其移动到 if 语句中。
由于. _ _on_command_error
推荐阅读
- python - 为什么 sum 函数不正确地舍入两个浮点数
- django - 如何在 Zappa (wkhtmltopdf) 中安装 OS 依赖包
- python - 按特定轴过滤元组列表
- java - 在使用 material.textfield.TextInputLayout 时,我的轮廓框涵盖了提示。如何在不覆盖我的盒子的情况下显示提示?
- r - `mstate`:将“long”格式数据准备成“mstate”格式数据
- javascript - 如何在图表中显示数据?
- java - 如何在 web.xml 中创建多个通配符 url 模式?
- html - 如何从该网站获取 href attr?
- db2 - 在 DB2 SQL 函数中,是否有等效于 JAVA 和 .Net.. 中的 finally 块?
- javascript - 将所有数组对象(firestore 时间戳)转换为日期