Discord.py SQLite3 禁用词系统 - 问题

Posted

技术标签:

【中文标题】Discord.py SQLite3 禁用词系统 - 问题【英文标题】:Discord.py SQLite3 Banned Word System - Issue 【发布时间】:2022-01-05 14:46:23 【问题描述】:

所以,我尝试使用 sqlite3 制作一个禁用词系统,但我遇到了一个问题,它根本没有错误,也不起作用

我的代码:(是的,我导入了 sqlite3)& 格式正确,它只是它自己的代码


        @commands.Cog.listener()
        async def on_message(self, member):
            db = sqlite3.connect('.//SQL//bannedwords.sqlite')
            cursor = db.cursor()
            cursor.execute(f'SELECT msg FROM bannedwords WHERE guild_id = message.guild.id')
            result = cursor.fetchone()
            if result is None:

                return
            else:

                cursor.execute(f"SELECT msg FROM main WHERE guild_id = member.guild.id")
                result = cursor.fetchone()
                await message.author.delete()
                embed=discord.Embed(title="Blacklisted Word", description="Test")
                await message.send(embed=embed, delete_after=7.0)






    @commands.group(invoke_without_commands=True)
    async def add(self, ctx):
        return







    @add.command()
    async def word(self, ctx, channel:discord.TextChannel):
        if ctx.message.author.guild_permissions.administrator:
            db = sqlite3.connect('.//SQL//bannedwords.sqlite')
            cursor = db.cursor()
            cursor.execute(f'SELECT msg FROM bannedwords WHERE guild_id = ctx.guild.id')
            result = cursor.fetchone()
            if result is None:
                sql = ("INSERT INTO bannedwords(guild_id, msg) VALUES(?,?)")
                val = (ctx.guild.id, msg)
                await ctx.send(f"h")
            elif result is not None:
                sql = ("UPDATE bannedwords SET msg = ? WHERE guild_id = ?")
                val = (msg, ctx.guild.id)
                await ctx.send(f"added")
            cursor.execute(sql, val)
            db.commit()
            cursor.close()
            db.close()

我知道我放置了一个文本通道,但我认为这不是唯一的问题 - 或者我不太确定我应该用什么替换它以检测 msg 列中的消息

【问题讨论】:

这不是很清楚 - 到底是什么问题? 【参考方案1】:

使用message.channel.send 代替message.send

【讨论】:

恐怕你误解了这个问题,我正在尝试制作一个禁止词系统,但是我很好地引用了文本频道,我忘记删除它但我不确定要替换它,所以它会检测是否禁用词在数据库的 msg 列中 - 我使用 message.send 因为我不需要在特定频道中发送它,它只存储公会 ID 和作为禁用词的味精&我的问题是它甚至不会存储它。

以上是关于Discord.py SQLite3 禁用词系统 - 问题的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用 sqlite3 向我的 discord.py 机器人添加自定义前缀

如何在 discord.py 中将 on_message 与 sqlite3 集成?

Discord.py 阅读列表

如何在 discord.py 中使用多词别名

频道中的 Discord.py 禁用命令

Discord.py 在嵌入中禁用按钮/冻结按钮