Как я мешаю себе оскорблять людей в чатах (чтобы не ловить баны)
Всем привет, я Миша и я оскорбляю людей в чатах. Я этим не горжусь и частенько расстраиваюсь из-за того, что снова сорвался и на кого-то наехал. Более того, подобное поведение может приводить к тому, что банят чат, а то и саму игру. Я решил, что нужно с этим заканчивать.
Искусственные ограничения помогают взять паузу
Множество действий я совершаю на автомате: например, раньше я зависал в ленте ВК. Чтобы бороться с этим, я удалил из ленты вообще всё — теперь, чтобы узнать о чём-то новом, мне нужно было зайти на страницу друга или сообщества, то есть сделать несколько кликов вместо одного. Поначалу был fomo (страх упустить), но со временем оказалось, что по-настоящему мне интересны только несколько групп, в которые я стал заходить через меню сообществ. Времени на ВК стало уходить меньше, а единственное, что я для этого сделал — перевёл неосознанные действия в осознанные.
Чаты для меня работают аналогично. Я понимаю, что в спокойном состоянии я не говорю людям гадости. Значит, мне нужен какой-то инструмент, который помешает говорить эти гадости, пока я злюсь — этот инструмент давал бы мне паузу, чтобы из состояния "реагирую быстро" я переходил в состояние "действую обдуманно".
Что я с этим сделал?
Я написал код на питоне, который следит за вводом с клавиатуры и предупреждает меня, если я напечатал слово из стоп-листа. Поскольку мой код беспардонный — он смело сворачивает всё, что посчитает нужным. Вот как это работает:
Теперь я запускаю этот перед началом игры, и действую более обдуманно. Более того: опасаясь, что игра свернётся, я начинаю думать о последствиях даже до того, как я получил уведомление от приложения.
Я считаю, что подобный фильтр поможет тем, кто страдает от одной из двух проблем:
- Самобичевание после плохого поведения
- Бичевание со стороны модераторов в виде бана после плохого поведения
Что было интересным и сложным в процессе разработки
Вообще я ненастоящий сварщик. Из всего, где можно писать код, я пристойно владею только SQL, но многого умею понемножку.
Во-первых, я не знал, где можно написать код, который можно будет запускать не из программы, а из файлика. Я писал игры на Unity, но чувствовал, что Unity явно будет излишним для программы с одной функцией. Мне повезло: я вспомнил, что однажды коллега делала для меня exe-файл, который включал её питон-код и работал без компилятора питона на моём рабочем компьютере. Так я выбрал свой технологический стэк.
Во-вторых, на Питоне я до этого писал, в основном работая с API. Ну, например, чтобы выгрузить все комментарии из паблика ВК или сделать телеграм-бота. Сейчас же мне понадобилось научиться следующему:
- Выдавать алерты через сообщения Windows (импорт модуля ctypes)
- Показывать интерфейс для включения и выключения программы (модуль tkinter)
- Считывать клавиатуру в фоновом режиме (модуль pynput)
- И, наконец, перегонять всё это в exe — для этого я научился пользоваться pyinstaller.
Внезапно оказалось, что pyinstaller испытывает проблемы с определённой версией pynput, поэтому пришлось её даунгрейднуть.
К счастью, все мои проблемы, возникшие при разработке, оказались тривиальны и решались при помощи гугла и стэковерфлоу — так что, не зная ничего из перечисленных выше вещей, я смог собрать первую версию программы за 4 часа.
Инструкции по применению
Если вам интересно попробовать приложение, оно лежит на гитхабе. Там есть как питоновский файл, так и экзешник (он такой большой, потому что в нём есть много импортов). При первом запуске программа создаёт файлик 'badwords.txt' рядом с собой, поэтому если её расположить в папке, для записи в которую потребуются права администратора, то и запускать её нужно от имени администратора. Но лучше, конечно, не запускайте приложения от рандомных чуваков из интернета с такими правами.
Файл badwords.txt можно редактировать вручную, можно добавлять слова, находясь внутри программы. Изначально в нём 5 слов, в файлике на гитхабе — чуть больше (я не очень оригинален в оскорблениях). Для прекращения работы основной функции нужно нажать PageUp, находясь за пределами окна программы. Если не нажать PageUp, то Windows думает, что программа зависла. Программа поддерживает русский и английский языки, при этом если в стоп-листе есть слово "bitch", то она среагирует и на слово "ишеср" (но не среагирует на "битч").
Если вы введёте непристойное слово — программа вас предупредит об этом, и вы сможете нажать "ОК", либо "Справка". Обе кнопки ничего не делают, но кнопка "ОК" хотя бы закрывает окошко предупреждения :)
Я не хочу заработать на этой программе и не хочу привлекать вас куда-либо. Просто программа оказалась полезной для меня и, поскольку я не видел подобных решений, я хочу ей поделиться.