Discord.py-Rewrite获取一个列入黑名单的术语列表,并检查命令后的参数是否包含一个列入黑名单的术语 [英] Discord.py-Rewrite Taking a list of blacklisted terms and checks if arguments after command contains one of the blacklisted terms

查看:50
本文介绍了Discord.py-Rewrite获取一个列入黑名单的术语列表,并检查命令后的参数是否包含一个列入黑名单的术语的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在研究一种类似于"Discord Delivers"的不和谐机器人.和比萨饼字节".我正在尝试获取一个术语/关键字列表,并检查命令后的参数(命令的代码在本文的结尾);因此,如果他们确实执行>订购BadWord ,那么它会检查其是否包含先前指定的列入黑名单的条款之一,如果这样,则类似于 await ctx.send(其中一个列入黑名单的字词,则不会下达您的订单.")或类似的东西.很遗憾,我没有想出我尝试过的方法,正在执行 if blacklist中的args:或每个单词的类似操作.

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)

额外

如果可能的话,列入黑名单的术语是否可以像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']
      

      JSON导入加载中的

      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
      

      这篇关于Discord.py-Rewrite获取一个列入黑名单的术语列表,并检查命令后的参数是否包含一个列入黑名单的术语的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆