python - Discord.PY 警告命令原因被隔开
问题描述
试图发出警告命令,原因部分被隔开。
@bot.command(pass_context = True)
async def warn(ctx, user:discord.User, *, reason="None"):
if ctx.message.author.guild_permissions.manage_messages:
if not reason:
await ctx.send("Please provide a reason")
return
reason = ' '.join(reason)
for current_user in report['users']:
if current_user['name'] == user.name:
current_user['reasons'].append(reason)
break
else:
report['users'].append({
'name':user.name,
'reasons': [reason,]
})
with open('vnreports.json','w+') as f:
json.dump(report,f)
await ctx.send(f"Succesfully reported {user} for {reason}")
await logs(member=f'{user}', action='warned', reason=f'{reason}', mod=ctx.author)
else:
await ctx.send("no")
return
以上是所述命令的代码。“日志”是一个与其他一切完美配合的功能。
async def logs(member, action, reason, mod):
channel = bot.get_channel(801989689149882388)
embed = discord.Embed(title=f"Audit Channel Post", description="---")
embed.add_field(name=f"{member} has been {action}", value=f"Reason is {reason}", inline=False)
embed.add_field(name=f"Action was done by:", value=f"{mod}", inline=False)
embed.set_footer(text=f"Bot made by @vito#1000")
await channel.send(embed=embed)
解决方案
这是因为' '.join(reason)
。reason
已经是一个字符串,没有理由这样做。但如果它是一个列表,你可以这样做''.join(reason)
。这样,它不会在字符之间添加空格。你只需要删除这一行:
@bot.command(pass_context = True)
async def warn(ctx, user:discord.User, *, reason="None"):
...
reason = ' '.join(reason) # This line has to be removed.
...
推荐阅读
- javascript - 如果我在其 EventListener 的功能中,如何获取元素
- statistics - 技术名称是什么?
- javascript - 在多选Angular中获取最后点击的元素
- java - 具有多个数据库但没有自动配置的 Spring Boot
- angular - Angular 库项目中的 SVG 组件给出“未知单词”错误
- python-3.x - 如何在没有 Docker 的情况下使用 Scrapy-Splash?
- php - Symfony 项目在虚拟主机上无法正常工作
- r - 如何将带有标题和脚注的表格从纵向更改为横向
- mysql - Visual Studio 2019 中的实体框架集成
- web-services - 从自定义 VDM 生成的 CDS 不包含注释