discord.py - 我如何做到这一点,以便我的机器人在 discord.py rewrite 中有 3 个警告时自动踢人
问题描述
所以这是我的警告系统代码:
@commands.has_permissions(manage_messages=True)
async def warn(ctx,user:discord.User,*reason:str):
if not reason:
await ctx.send("Du skal lige give mig en grund til din Advarsel!")
return
reason = ' '.join(reason)
for current_user in report['users']:
if current_user['name'] == user.name:
current_user['reasons'].append(reason)
break
else:
await ctx.send(f"{user.name} er blevet advaret med grunden: '{reason}'")
report['users'].append({
'name':user.name,
'reasons': [reason,]
})
with open('reports.json','w+') as f:
json.dump(report,f)
@client.command()
@commands.has_permissions(manage_messages=True)
async def warnings(ctx,user:discord.User):
for current_user in report['users']:
if user.name == current_user['name']:
await ctx.send(f"{user.name} er blevet advaret {len(current_user['reasons'])} gange : {','.join(current_user['reasons'])}")
break
else:
await ctx.send(f"{user.name} er aldrig blevet advaret!")
我所要求的只是帮助他们在我的reports.json文件中有3个警告他们被踢..
我一点免责声明..我没有自己编写所有代码,我把它从堆栈中取出并修改
解决方案
每当您警告某人时检查 3 个警告,并使用discord.Member
而不是discord.User
.
@commands.has_permissions(manage_messages=True)
async def warn(ctx,user:discord.Member,*reason:str):
if not reason:
await ctx.send("Du skal lige give mig en grund til din Advarsel!")
return
reason = ' '.join(reason)
for current_user in report['users']:
if current_user['name'] == user.name:
current_user['reasons'].append(reason)
break
else:
await ctx.send(f"{user.name} er blevet advaret med grunden: '{reason}'")
report['users'].append({
'name':user.name,
'reasons': [reason,]
})
with open('reports.json','w+') as f:
json.dump(report,f)
if len(report['users']) >= 3:
await user.kick(reason='You reached 3 warnings')
@client.command()
@commands.has_permissions(manage_messages=True)
async def warnings(ctx,user:discord.Member):
for current_user in report['users']:
if user.name == current_user['name']:
await ctx.send(f"{user.name} er blevet advaret {len(current_user['reasons'])} gange : {','.join(current_user['reasons'])}")
break
else:
await ctx.send(f"{user.name} er aldrig blevet advaret!")
推荐阅读
- javascript - 无法使用反应更改元素的值
- excel - 以编程方式检测表的存在和大小,然后将它们添加到另一个工作簿
- reactjs - 在 reactjs 中导入文件
- laravel - 如何计算运费(选项)laravel?
- node.js - Firebase 按日期查询在部署后不起作用
- excel - 将 Onedrive/SharePoint 文件链接附加到电子邮件
- google-bigquery - pyspark.sql.utils.IllegalArgumentException:要求失败:尚未设置临时 GCS 路径
- r - 由于找不到库,无法安装 R 包
- pandas - 如何将以下数组更改为 3 维以将其传递给 tensorflow?
- node.js - 如何在 Playwright 中添加自定义标题