Im developing my discord bot on python and I wanted to make curse words filter. There is a problem: when bot detects a curseword bot automatically searches for a user to send a notification to. But when bot finds a user he sends him a notification and breaks loop automatically.
Here is the code:
import disnake
from disnake.ext import commands
from disnake import TextInputStyle
from disnake.utils import get
import os
from dotenv import load_dotenv, find_dotenv
import sqlite3
from cleantext import clean
from unidecode import unidecode
from cenzwords import cenz, sokr
import re
import pendulum
import sys
sys.stderr = open("errors.txt", "a")
startmemcount = 129
class CenzCog(commands.Cog):
def __init__(self, bot):
self.bot = bot
@commands.Cog.listener()
async def on_message(self, message):
author = message.author
msgchan = message.channel.name
msg = message.content
embedswear = disnake.Embed(title="Обнаружено матерное слово!", description=f"""
Канал: {msgchan}
Автор: {author}
Сообщение: {msg}
""", color=0xff0000)
guild = self.bot.get_guild(1168613302469918840)
role = get(guild.roles, id=1248181382258364436)
currentstat = False
if not currentstat:
if message.channel.id != 1263534458473152554 and message.channel.id != 1257641661694218342:
for cenzc in cenz:
msgl = message.content.lower()
if cenzc in msgl:
for user in guild.members:
if role in user.roles:
print(user)
await user.send(embed=embedswear)
currentstat = True
break
for cenzw in sokr:
msgl = message.content.lower()
for _ in range(len(re.findall(cenzw, msgl))):
if cenzw in msgl:
tag = None
tag1 = None
print(cenzw)
try:
tag = msgl.index(cenzw) + len(cenzw)
print(msgl[tag])
tag1 = msgl.index(cenzw) - 1
if str(msgl[tag]):
pass
if str(msgl[tag1]):
pass
except:
for user in guild.members:
if role in user.roles:
print(user)
await user.send(embed=embedswear)
currentstat = True
break
print(tag)
print(tag1)
if msgl[tag1] == " ":
if msgl[tag] == " " or msgl[tag] == "." or msgl[tag] == "-" or msgl[tag] == "_":
for user in guild.members:
if role in user.roles:
print(user)
await user.send(embed=embedswear)
currentstat = True
break
else:
msgl = msgl.replace(msgl[tag1:tag], "")
print(msgl)
def setup(bot):
bot.add_cog(CenzCog(bot))`
I tried to delete extra lines of code but the result is the same.