import string import discord from discord.ext import commands from discord.ext.commands import Context, has_permissions import random import os bad = ['бля', 'хуй', 'пиздец', 'сука', 'ебать', 'ебанат', 'хуя', 'уебан', 'пидор', 'ебаный', 'блять','уебу','пиздану','пизду', 'блядь', 'чивапчичи','лол'] class Filter(commands.Cog): def __init__(self, bot): self.bot = bot self.last_member = None async def write(self, name, server_id, channel_id): tog = 1 self.bot.confmsg.execute("INSERT INTO channel(tog, name, server_id, channel_id) VALUES(?, ?, ?, ?)", (tog, name, server_id, channel_id,)) self.bot.confmsg.commit() async def delete(self, name, server_id, channel_id): self.bot.confmsg.execute("DELETE FROM channel WHERE name=? AND server_id=? AND channel_id=?",(name, server_id, channel_id)) self.bot.confmsg.commit() async def badwords(self, message, serid, chanid): name = 'badwords' res = await self.bot.select(name, serid, chanid) if res == "disabled": pass elif res == "enabled": if {i.lower().translate(str.maketrans('ё', 'е', string.punctuation)) for i in message.content.split(' ')} \ .intersection(set(bad)) != set(): await message.reply("не матерись блядь") print(f'------------------------------------\nmessage with bad word: {message.content}\n------------------------------------') async def message(self, message, server_id, channel_id): prefix = self.bot.getcfg.getprefix() if message.content.startswith(prefix): return name = 'msgsend' res = await self.bot.select(name, server_id, channel_id) if res == "disabled": pass elif res == "enabled": msg = message.content server_id = message.guild.id rows = self.bot.conmsg.execute("SELECT id FROM message WHERE server_id=? ORDER BY id DESC LIMIT 1", (server_id,)) resultsid = rows.fetchone() print("------------------------------------\nserverid: ", server_id,"\nmessage content: ", msg, "\n------------------------------------") if resultsid == None: message_id = 1 else: message_id = resultsid[0] + 1 self.bot.conmsg.execute("INSERT INTO message(id, server_id, messages) VALUES (?, ?, ?)", (message_id, server_id, msg)) self.bot.conmsg.commit() c = 5 a = random.randrange(0, c) if a == 1: b = random.randrange(1, message_id) rows2 = self.bot.conmsg.execute("SELECT messages FROM message WHERE id=? AND server_id=? ORDER BY id DESC LIMIT 1", (b, server_id,)) msgresult = rows2.fetchall() print('------------------------------------\nmessage send content: ', msgresult, '\n------------------------------------') await message.channel.send(" ".join(msgresult[0])) @commands.Cog.listener() async def on_message(self, message): if message.author.bot: return server_id = message.guild.id channel_id = message.channel.id await self.badwords(message, server_id, channel_id) await self.message(message, server_id, channel_id) @commands.command() @commands.is_owner() async def clear_msgdb(self, message): """ Clear db for 'message' """ server_id = message.guild.id rows = self.bot.conmsg.execute("SELECT id FROM message WHERE server_id=? ORDER BY id DESC LIMIT 1", (server_id,)) result = rows.fetchone() self.bot.conmsg.execute("DELETE FROM message WHERE server_id=?", (server_id,)) self.bot.conmsg.commit() embed = discord.Embed( color=random.randint(0, 0xFFFFFF), title="Message history has been deletet" ) embed.add_field(name="number of msg:", value=f'{result}') await message.send(embed=embed) @commands.command() @commands.is_owner() async def msgdb(self, message): """ Total number of DB msgsend """ server_id = message.guild.id rows = self.bot.conmsg.execute("SELECT id FROM message WHERE server_id=? ORDER BY id DESC LIMIT 1", (server_id,)) result = rows.fetchone() embed = discord.Embed( color=random.randint(0, 0xFFFFFF), title="Total number of msg" ) embed.add_field(name=" ", value=f'{result}') await message.send(embed=embed) @commands.command() @commands.is_owner() async def toggle(self, ctx, *msg): """ Toggle(msgsend, badwords, logs) """ server_id = ctx.guild.id channel_id = ctx.channel.id name = " ".join(msg) if name != "msgsend" and name != "badwords" and name != "logs": embed = discord.Embed( title="select what you want to toggle", color=random.randint(0, 0xFFFFFF), ) else: res = await self.bot.select(name, server_id, channel_id) if res == "disabled": embed = discord.Embed( title=f"{name} has been enabled", color=random.randint(0, 0xFFFFFF), ) await self.write(name, server_id, channel_id) elif res == 'enabled': embed = discord.Embed( title=f"{name} has been disabled", color=random.randint(0, 0xFFFFFF), ) await self.delete(name, server_id, channel_id) await ctx.send(embed=embed) @commands.command() @commands.is_owner() async def status(self, ctx): """ """ server_id = ctx.guild.id channel_id = ctx.channel.id bw = await self.bot.select(name='badwords', server_id=server_id, channel_id=channel_id) msgsend = await self.bot.select(name='msgsend', server_id=server_id, channel_id=channel_id) logs = await self.bot.select(name='logs', server_id=server_id, channel_id=channel_id) embed = discord.Embed( color=random.randint(0, 0xFFFFFF), title="status" ) embed.add_field(name="badwords", value=f'{bw}') embed.add_field(name="msgsend", value=f'{msgsend}') embed.add_field(name="logs", value=f'{logs}') await ctx.send(embed=embed) @commands.Cog.listener() async def on_ready(self): print('Filter cog has been loaded') async def setup(bot): await bot.add_cog(Filter(bot))