Discord.py 阅读列表

Posted

技术标签:

【中文标题】Discord.py 阅读列表【英文标题】:Discord.py read list 【发布时间】:2021-05-23 16:18:12 【问题描述】:

我有一个文件,其中包含一个名为 wbanned.txt 的列表,其中包含禁用词。 我希望阅读发送的每条消息,如果它包含 txt 列表中的一个禁止单词(每个单词都在列表中的新行上),则将其删除。

我尝试了一些方法,但只有当它包含列表中的最后一个单词时才将其删除。

代码:

@commands.Cog.listener()
async def on_message(self, message):
    try:
        file = open('./resources/wbanned.txt')
        all_lines = file.readlines()
        for x in range(len(all_lines)):
            if all_lines[x] in message.content:
                await message.delete()

    except Forbidden:
        pass

名单:

word
banned
kick

所以程序必须接受这句话:“This is example 1” 但是如果你输入:“This a被禁止的成员”这句话需要删除。

【问题讨论】:

【参考方案1】:

.readlines() 包含尾随换行符,因此您需要 .strip() 它们。

代码(为最佳实践做了一些清理):

@commands.Cog.listener()
async def on_message(self, message):
    try:
        with open('./resources/wbanned.txt') as file:
            for line in file:
                if line.strip() in message.content:
                    await message.delete()

    except Forbidden:
        pass

(直接迭代文件会像.readlines()一样逐行迭代,但不会创建不必要的列表)

【讨论】:

您不应该在每条消息上都打开文件...理想情况是在启动时加载文件并将单词列表作为变量传递...

以上是关于Discord.py 阅读列表的主要内容,如果未能解决你的问题,请参考以下文章

(discord.py) 获取特定语音频道中所有成员的列表

discord.py 如何获取用户连接的所有服务器的列表?

使用 discord.py 获取不和谐服务器中所有成员的列表时出现问题

(discord.py) 如何获取用户拥有多少权限的列表

Discord.py:检查用户是不是具有列表中的角色 ID 不起作用

如何获取对 discord.py 中的消息做出反应的成员列表?