問題描述
我正在開發(fā)一個類似于Discord Delivers"的不和諧機器人;和比薩餅".我正在嘗試獲取術(shù)語/關(guān)鍵字列表并檢查命令后的參數(shù)(命令的代碼在這篇文章的末尾);因此,如果他們執(zhí)行 >order BadWord
則它會檢查它是否包含先前指定的列入黑名單的術(shù)語之一,如果是,則像 await ctx.send("Due to your order contains被列入黑名單的條款之一,您的訂單將不會被放置.")
或類似的東西.我很抱歉沒有說出我所嘗試的,正如我所能想到的那樣,正在做諸如 if args in blacklist:
之類的事情,或者為每個單詞做類似的事情.
I am working on a discord bot similar to "Discord Delivers" and "Pizza Byte". And I am trying to take a list of terms/keywords and check if the arguments after the command (The code for the command is at the end of this post); So if they do >order BadWord
then it checks if it contains one of the previously specified blacklisted terms, and if so, does like await ctx.send("Due to your order containing one of the blacklisted terms, your order will not be placed.")
Or something like that. I am sorry for not saying what i have tried, as all i can think of, is doing things like if args in blacklist:
or something like that for each word.
@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)
額外
如果可能的話,列入黑名單的術(shù)語可以是 json 文件還是文本文件?謝謝.
EXTRA
And if possible, could the blacklisted terms be in like either a json file or a text file? Thanks.
我想我應該澄清一下,我確實定義了所使用的變量.一切正常.
I thought i should clarify that I do in fact define the variables that are used. Everything works properly.
推薦答案
- 沒有
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 文件(將包含所有列入黑名單的單詞)
The json file (which will contain every blacklisted words)
['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
這篇關(guān)于Discord.py-Rewrite 獲取列入黑名單的術(shù)語列表并檢查命令后的參數(shù)是否包含列入黑名單的術(shù)語之一的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!