python - 在 discord.py 命令中更改比较语句中的变量
问题描述
我需要在 Python 中为一个不和谐的 bot 做一个命令,它会按照这个算法工作:当命令执行时,bot 会从列表中随机显示一条消息,然后会检查这条消息的内容。方式,如果它匹配条件,更改将应用于变量。我通过在列表中为这个句子检查一个带有随机句子的变量,然后更改机器人稍后将输出的另一个成员计数变量来做到这一点。但是代码不起作用,出现一个错误,提示您无法membercount
从命令为局部变量赋值。我试图将 if 放置为一个命令,但 thenkonfeticount
没有找到。它仍然要从命令中取出,以便它自动更新,我把它放在while True
循环延迟,但没有任何结果。请帮我处理这个问题。提前致谢!编码:
membercount = 0
job = ['Вы проработали в пиццерии и испекли 40 пицц за что получили **220** Монет.', 'Вы проработали мойщиком окон и получили **190** Монет.', 'Вы проработали кассиром в ларьке с мороженным и получили **100** Монет', 'Вы проработали мойщиком посуды в элитном ресторане и получили **280** Монет.', 'Вы проработали на стройке нося кирпичи и получили **230** Монет.', 'Вы проработали установщиком окон и получили **310** Монет.']
@bot.command()
async def j(ctx):
konfeticount = str(random.choice(job))
if konfeticount == job[0]:
membercount += 220
embed = discord.Embed(color = 0xff0000, description = f"{ctx.message.author.name} {konfeticount}", title = 'Работа')
await ctx.send(embed = embed)
# Balance
@bot.command()
async def ballance(ctx):
embed = discord.Embed(color = 0xff0000, description = f"{ctx.message.author.name} Ваш баланс - **{membercount}**", title = 'Баланс')
await ctx.send(embed = embed)
解决方案
出现您的问题是因为membercount
它是一个全局变量,但在 Python 中,全局变量被设计为read only。因此,当您尝试分配membercount += 220
Python 正在执行的操作时,会创建一个名为membercount
.
从函数内部修改全局变量的正确方法是将其声明为global
,因此您的代码应如下所示:
membercount = 0
job = ['Вы проработали в пиццерии и испекли 40 пицц за что получили **220** Монет.', 'Вы проработали мойщиком окон и получили **190** Монет.', 'Вы проработали кассиром в ларьке с мороженным и получили **100** Монет', 'Вы проработали мойщиком посуды в элитном ресторане и получили **280** Монет.', 'Вы проработали на стройке нося кирпичи и получили **230** Монет.', 'Вы проработали установщиком окон и получили **310** Монет.']
@bot.command()
async def j(ctx):
global membercount # declare membercount to be a global variable
konfeticount = str(random.choice(job))
if konfeticount == job[0]:
membercount += 220 # here we assign a value to the global variable membercount
embed = discord.Embed(color = 0xff0000, description = f"{ctx.message.author.name} {konfeticount}", title = 'Работа')
await ctx.send(embed = embed)
# Balance
@bot.command()
async def ballance(ctx):
embed = discord.Embed(color = 0xff0000, description = f"{ctx.message.author.name} Ваш баланс - **{membercount}**", title = 'Баланс')
await ctx.send(embed = embed)
推荐阅读
- netsuite - Netsuite - 出现错误:无法评估脚本:执行定义回调时所有 SuiteScript API 模块都不可用
- python - 根据列表创建给定字符串的所有可能组合
- python - 无效的语法错误:python 中的 Quine McCluskey 算法
- java - 使用 fire base 在 android 应用程序中管理两种类型(学生和教师)的用户会话
- html - 如何使用引导程序创建多页网站?
- javascript - 导航器振动破解ios浏览器上的代码
- gatsby - Gatsby 未能部署到 Netlify:无法验证错误 { ValidationError: child "error" failed because ["error" must be an object]
- reactjs - 如何在不使用反应钩子的情况下更改 Material-UI 文本字段的高度
- python - 用 Python 替换文件中的一行不像它应该的那样工作
- mongodb-query - 嵌入式 mongoDB 打印/查询的问题