Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Datetime 如何改进discord.py的反垃圾邮件功能?_Datetime_Discord_Discord.py_Message_Spam Prevention - Fatal编程技术网

Datetime 如何改进discord.py的反垃圾邮件功能?

Datetime 如何改进discord.py的反垃圾邮件功能?,datetime,discord,discord.py,message,spam-prevention,Datetime,Discord,Discord.py,Message,Spam Prevention,我正在制作一个discord机器人,内置了反垃圾邮件功能,但我想改进它。我不希望此函数对某些角色做出反应,如管理员或主持人(因此我希望此函数不对某些角色做出反应,以便管理员可以发送垃圾邮件)。我也有垃圾邮件频道,我不希望这个功能工作,我怎么做呢?最后,但并非最不重要的是:如何删除相同的(垃圾邮件)消息?因为我的机器人做的是:它说“停止垃圾邮件”。但是我想删除相同的消息。非常感谢你!我希望你能帮助我 守则: 导入操作系统 进口不和 导入日期时间 意图=不和谐。意图。全部() bot=command

我正在制作一个discord机器人,内置了反垃圾邮件功能,但我想改进它。我不希望此函数对某些角色做出反应,如管理员或主持人(因此我希望此函数不对某些角色做出反应,以便管理员可以发送垃圾邮件)。我也有垃圾邮件频道,我不希望这个功能工作,我怎么做呢?最后,但并非最不重要的是:如何删除相同的(垃圾邮件)消息?因为我的机器人做的是:它说“停止垃圾邮件”。但是我想删除相同的消息。非常感谢你!我希望你能帮助我

守则:

导入操作系统
进口不和
导入日期时间
意图=不和谐。意图。全部()
bot=commands.bot(命令前缀=“$”,意图=意图)
时间\窗口\毫秒=5000
每个窗口的最大消息数=5
作者_msg_times={}
@机器人事件
邮件(ctx)上的异步定义:#通道和管理员是否允许垃圾邮件?如何制作?
全局作者\u消息\u计数
author\u id=ctx.author.id
curr_time=datetime.datetime.now().timestamp()*1000
如果不是author\u msg\u times.get(author\u id,False):
作者信息时代[作者id]=[]
author\u msg\u times[author\u id]。追加(当前时间)
expr\u time=当前时间-时间窗口\u毫秒
过期的\u msgs=[
msg\u作者时间中的msg\u时间[author\u id]
如果消息时间max\u msg\u per\u窗口:
等待ctx。删除(ctx)
等待ctx.send(“停止垃圾邮件”)
其他:
打印(“你可以走了!”)
bot.run(os.getenv('token'))

关于角色的第一个问题,您应该在垃圾邮件检查开始时添加:

if ctx.author.guild_permissions.manage_messages:
    return
这将不会影响任何有权删除邮件的成员(这将是版主或管理员)

你也可以

if ctx.channel.id == [id here]:
    return
将[id here]替换为垃圾邮件频道的id。 最后,将
等待ctx.send(“停止垃圾邮件”)
放在
等待ctx.delete(ctx)
之前,并确保您的机器人具有删除邮件的权限