python - Discord.py-Rewrite 获取列入黑名单的术语列表并检查命令后的参数是否包含列入黑名单的术语之一
问题描述
我的目标
我正在开发一个类似于“Discord Delivers”和“Pizza Byte”的不和谐机器人。我正在尝试获取术语/关键字列表并检查命令后的参数(命令代码在本文末尾);因此,如果他们这样做,>order BadWord
那么它会检查它是否包含先前指定的列入黑名单的术语之一,如果是,是否喜欢await ctx.send("Due to your order containing one of the blacklisted terms, your order will not be placed.")
或类似的东西。我很抱歉没有说出我所尝试的,正如我所能想到的if args in blacklist:
那样,为每个单词做类似或类似的事情。
我的代码
@bot.command(pass_context=True)
async def order(ctx, *, orderItem):
channel = bot.get_channel(CHANNEL ID OF THE CHANNEL)
link = await ctx.channel.create_invite(max_age = 300)
global baseNumberID
baseNumberID += 1
global orderIDdf
global df
df[str(baseNumberID)] = ctx.author.name
embed=discord.Embed(title="New order", color=0xfc57ff)
embed.add_field(name="Who and Where", value="{} in {} in the {} channel".format(ctx.message.author, ctx.message.guild.name, ctx.message.channel.mention), inline=False)
embed.add_field(name="What", value="{}".format(orderItem), inline=False)
embed.add_field(name="Invite", value="{}".format(link), inline=False)
embed.add_field(name="Order ID", value="Order ID is {}".format(baseNumberID), inline=False)
embed.add_field(name="Time", value="{} GM time".format(strftime("%Y-%m-%d %H:%M:%S", gmtime())), inline=True)
embed.set_footer(text="End of this Order")
#Second embed that will be used later.
deliverIDInfo = str(baseNumberID)
deliverInfoEmbed=discord.Embed(title="Order Info")
deliverInfoEmbed.add_field(name="Who and Where", value="{} in {} in the {} channel".format(ctx.message.author, ctx.message.guild.name, ctx.message.channel.mention), inline=False)
deliverInfoEmbed.add_field(name="What", value="{}".format(orderItem), inline=False)
deliverInfoEmbed.add_field(name="Invite", value="{}".format(link), inline=False)
deliverInfoEmbed.add_field(name="Order ID", value="Order ID is {}".format(baseNumberID), inline=False)
deliverInfoEmbed.add_field(name="Time", value="{} GMT time".format(strftime("%Y-%m-%d %H:%M:%S", gmtime())), inline=True)
deliverInfoEmbed.set_footer(text="End of this Order")
orderIDdf[deliverIDInfo] = deliverInfoEmbed
await ctx.author.send("Your order has been placed!")
await ctx.author.send(embed=embed)
await channel.send(embed=embed)
额外的
如果可能的话,列入黑名单的术语是否可以像 json 文件或文本文件一样?谢谢。
编辑:澄清
我想我应该澄清一下,我确实定义了所使用的变量。一切正常。
解决方案
- 没有
json
图书馆:
blacklist = ['test', 'yolo'] #Your blacklisted words here
@bot.command(pass_context=True)
async def order(ctx, *, orderItem):
if orderItem.lower() in blacklist:
await ctx.send("Due to your order containing one of the blacklisted terms, your order will not be placed.")
else:
#Your code here
- 使用
json
库:
json 文件(将包含每个列入黑名单的单词)
['test', 'yolo']
from json import loads
@bot.command(pass_context=True)
async def order(ctx, *, orderItem):
with open('blacklist.txt', 'r') as file:
blacklist = loads(file.read())
if orderItem.lower() in blacklist:
await ctx.send("Due to your order containing one of the blacklisted terms, your order will not be placed.")
else:
#Your code here
推荐阅读
- ios - FFPopup Pod:不使用时隐藏弹出窗口
- python - 在 spotipy 搜索方法中显示带有 preview_url 和曲目名称和图像的歌曲
- sapper - Sapper/Svelte 在另一个组件完成发布后更新组件内的状态
- c# - Identity Server 3 - invalid_grant - 已使用刷新令牌
- excel - Excel VBA:删除文件夹中的任何空 Excel 文件
- node.js - 贝宝窗口不显示多个项目
- javascript - 如何在 JS 中创建元素 HTML 并在聊天的消息框顶部对齐名称
- python - Python 现有连接被远程主机强行关闭 Pandas 读取 SQL 和 to sql 函数不同的数据库
- machine-learning - 使用 NLP 查找自定义实体
- python - 无法为 Python 3.8.5 VirtualEnv 导入 MySql.Connector