This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Switch branches/tags
Branches Tags
Could not load branches
Nothing to show
Could not load tags
Nothing to show
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Cancel Create
- Local
- Codespaces
HTTPS GitHub CLI
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more about the CLI.
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Как запикать мат за 2 минуты)
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
Latest commit message
Commit time
README.md
MAT Defender Discord bot
MAT defender — это Discord бот для удаления сообщений, содержащих мат. Блокировка мата не зависит от регистра сообщения.
- python3 (>= 3.5.3)
- discord.py
su — apt install python3 python3-pip pip3 install discord dpkg —install mat-defender-bot*.deb systemctl enable mat-defender-bot.service systemctl start mat-defender-bot.service
sudo apt install python3-discord sudo dpkg —install mat-defender-bot*.deb sudo systemctl enable mat-defender-bot.service sudo systemctl start mat-defender-bot.service
Другой дистрибутив GNU/Linux
Установите из вашего менеджера пакетов: Python 3 и PIP 3
pip3 install discord git clone https://github.com/lcomrade/mat-defender-discord-bot.git cd mat-defender-discord-bot chmod +x install.sh sudo ./install.sh sudo systemctl enable mat-defender-bot.service sudo systemctl start mat-defender-bot.service
Copyright 2021 Leonid Maslakov
About
MAT defender — это Discord бот для удаления сообщений, содержащих мат.
Источник: github.com
анти-мат бот discord.js
Я нашёл вот это Но это не совсем то, что мне надо. Мне надо что-бы он удалял только сообщения с матом, а без мата оставлял.Вот что у меня получилось:
bot.on(‘message’, async message => < if(message.author.id == «748788241867603979»)< let filterwordslist = [«лох», «пи р», «с@%а», «б&$!ть»]; let messageArray = message.content.split(» «); let args = messageArray.slice(0); const [. restArgs] = args; const text = restArgs.join(‘ ‘); let edit = text; filterwordslist.forEach(item =>< edit = edit.replace( new RegExp(`(^|[^а-я])$([^а-я]|$)`, «gmi»), «$1`*цензура*`$2» ); >); if(сообщение с матом)< message.delete(); message.channel.send(< embed: new Discord.MessageEmbed() .setColor(«RANDOM») .setAuthor(‘FilterWords’, message.guild.iconURL()) .setDescription(`$: ` + edit) >); > > >)
Вопрос у меня в этом условии:
if(сообщение с матом)
Отслеживать
10.8k 1 1 золотой знак 12 12 серебряных знаков 35 35 бронзовых знаков
задан 8 июл 2021 в 8:20
Дима Белич Дима Белич
59 7 7 бронзовых знаков
КАК ЗАПИКАТЬ МАТ НА АНДРОИД? / КАК ЗАЦЕНЗУРИТЬ ПЛОХИЕ СЛОВА
Спасибо за правку вопроса, я отозвал голос за закрытие и минус сменил на плюс (теперь вопрос вполне может быть полезен).
8 июл 2021 в 9:10
Комментарии не предназначены для расширенной дискуссии; разговор перемещён в чат.
8 июл 2021 в 9:59
Границы слов проверять надо.
8 июл 2021 в 10:09
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Судя по коду, переменная edit в результате выполнения метода forEach содержит текст с заменами; а переменная text (выше) — похоже, содержит нетронутый исходный текст.
Значит, сравнив значение этих переменных, можно определить наличие замен (а следовательно, и мата) в исходном тексте:
/*. */ filterwordslist.forEach(item => < edit = edit.replace( new RegExp(`(^|[^а-я])$([^а-я]|$)`, «gmi»), «$1`*цензура*`$2» ); >); if (edit !== text) < message.delete(); /*. */ >
Отслеживать
ответ дан 8 июл 2021 в 9:06
10.8k 1 1 золотой знак 12 12 серебряных знаков 35 35 бронзовых знаков
спасибо тебе, как я сам не додумался.
8 июл 2021 в 9:11
Неужели нельзя проверить вхождение без замены?
8 июл 2021 в 10:17
меня и так устраивает, а как говорится, работает не трогай.
8 июл 2021 в 11:29
8 июл 2021 в 11:32
Еще пару спичек сэкономить, поможет однократное инстанцирование массива слов и регулярок из них при запуске приложения. В этом уже начинает играть роль общая архитектура, а не только один отдельно взятый обработчик. и с высокой вероятностью появляется еще больше векторов оптимизации.
8 июл 2021 в 11:41
Вынеси список запрещённых слов в константу вне всех методов:
const blacklist = new Set([«слово», «второе», «третье»]);
А потом проверяй:
if (message.content.match(/[а-яё]/gi)?.some(word => blacklist.has(word)))
Это одно из самых эффективных решений.
Если версия ноды не позволяет использовать ?. , то можно вынести в переменную и сделать 2 проверки, либо написать так:
if ((message.content.match(/[а-яё]/gi) || []).some(word => blacklist.has(word)))
Отслеживать
ответ дан 8 июл 2021 в 11:49
121k 24 24 золотых знака 121 121 серебряный знак 293 293 бронзовых знака
if (message.content.match(/(?
Отслеживать
ответ дан 8 июл 2021 в 11:44
121k 24 24 золотых знака 121 121 серебряный знак 293 293 бронзовых знака
Используя для определения границ слова b (если этот токен в JS работает с кириллицей при флаге u ) или символьный класс юникода (типа [^p] ), можно сделать регулярку попроще и побыстрее.
8 июл 2021 в 12:01
Точнее, с классами юникода тут уместнее будет P (инверсный p ) — то есть, выражение вида /(^|P)(слово|ещеслово|. )($|P)/iu при использовании с методом test . Простые проверки буквального соответствия токенам не создают такого количества внутренних циклов как look’ы, и в некоторых случаях (без | ) они выполняются быстрее даже чем одиночный indexOf (быстрейшего из методов поиска подстроки в JS).
8 июл 2021 в 12:30
ответ без пояснений хуже ответа с пояснениями.
8 июл 2021 в 13:52
8 июл 2021 в 16:15
Источник: ru.stackoverflow.com
VIDEOMiN .NET
03:31
автор: Videomax 53507641 просмотров
02:01
автор: Videomax 274161 просмотров
02:58
автор: Videomax 1584591 просмотров