Database 我想制作一个黑名单命令,阻止来自特定帮会discord.py的邀请

Database 我想制作一个黑名单命令,阻止来自特定帮会discord.py的邀请,database,discord,command,discord.py,blacklist,Database,Discord,Command,Discord.py,Blacklist,我对这一切都很陌生。我想发出一个命令,阻止用户从黑名单公会发送链接。 该命令如下所示: !黑名单(公会id)原因 这是到目前为止的代码 async def server_blacklist(ctx, guild_id: int,*,reason= "no reason provided"): guild = client.get_guild(guild_id) invitelink = await delete_invite(guild) 我的第一个想法是我

我对这一切都很陌生。我想发出一个命令,阻止用户从黑名单公会发送链接。 该命令如下所示: !黑名单(公会id)原因 这是到目前为止的代码

async def server_blacklist(ctx, guild_id: int,*,reason= "no reason provided"):
    guild = client.get_guild(guild_id)
    invitelink = await delete_invite(guild)

我的第一个想法是我需要以某种方式存储公会ID(在.txt或.db中)。但是我不知道怎么做。

我以前的答案不令人满意,所以这里有一个新的答案:如果你想写文件,我建议

更透彻地解释了将某个帮会列入黑名单的方法:

我发现你可以使用的黑名单方法比我之前想象的要简单得多,邀请对象有公会属性,所以你可以很容易地检查

如何做您想做的事情的一个“简单”示例是:

@client.command()
异步def服务器黑名单(ctx,公会id:int):#黑名单命令
#要将公会id添加到文件中,请执行以下操作:
打开(“blacklisted guilds.txt”,“a”)作为黑名单文件:#以附加模式打开文件
blacklistfile.write(f“{guild_id}\n”)#添加一个带有帮会id的新行
@客户端事件
消息上的异步定义(消息):#每次发送消息时触发的事件
如果message.content中有“discord.gg”:#检查消息是否有“discord.gg”
inviteid=message.content.split(“discord.gg/”[1]。split(”[0]#从链接获取邀请id
invite=wait client.fetch_invite(inviteid)#从id获取invite对象
帮会id=invite.guild.id#获取帮会id
#检索公会ID并对照其他公会ID进行检查
打开(“blacklisted guilds.txt”、“r”)作为黑名单文件:#以读取模式打开文件
对于blacklistfile.read().split(“\n”)中的idstring:#开始遍历所有行
如果不是idstring==“”:#检查行是否有内容
如果int(idstring)=帮会id:#检查文件中的id是否与帮会id相同
等待消息。删除()
等待message.channel.send(f“{message.author.antify}!不要向此处的服务器发送邀请!”)
打断#停止for循环,因为我们已经将公会id与黑名单中的id进行了匹配
等待客户端。处理_命令(消息)#当使用on_消息事件和命令时,请记住添加此项,以便命令仍然有效

您想将邀请列入黑名单吗?每个邀请都包含
discord.gg
,你可以简单地将其列入黑名单。不,我想根据特定帮会的id将其列入黑名单。因此,当有人违反规则时。我可以将他列入黑名单,但你无法确定用户是否来自公会,对吗?我不知道你的方法是否可行。从这个角度来看,他也可以来自另一个服务器,如果我理解正确的话,你想要的方法会因为他在黑名单服务器上而阻止他的链接。是的,但这不是重点。我想使用server-id将来自服务器的邀请列入黑名单。因此,当用户向该服务器发送邀请时。它会删除它@DominikEvery invite是不同的/唯一的。如果您的机器人不在服务器上,则无法获取创建的邀请。只要把discord.gg列入黑名单,你就会没事的。谢谢。我要试试看它是怎么工作的