167 lines
6.7 KiB
Python
167 lines
6.7 KiB
Python
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))
|