[WIP] Move to go project layout, remove logrus & co from vendored libs
This commit is contained in:
121
internal/tg/censor.go
Normal file
121
internal/tg/censor.go
Normal file
@@ -0,0 +1,121 @@
|
||||
package tg
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/NicoNex/echotron/v3"
|
||||
)
|
||||
|
||||
// Censor парсит сообщения в поисках непотребных данных и если он их находит, то сообщение удаляется.
|
||||
// Непотребными могут быть аудиосообщения, аудиофайлы, видеосообщения, сообщения от имени других каналов итп.
|
||||
// Это могут настроить админы чятика через команду !admin censor.
|
||||
func Censor(msg *echotron.Update) bool {
|
||||
result := false
|
||||
|
||||
switch {
|
||||
case GetSetting(fmt.Sprintf("%d", msg.ChatID()), "VoiceMsg") == "1":
|
||||
result = true
|
||||
|
||||
// Предполагаем, что у voice-ов здесь всегда не ноль.
|
||||
if msg.Message.Voice.Duration != 0 {
|
||||
delMsg(msg)
|
||||
|
||||
result = true
|
||||
}
|
||||
|
||||
case GetSetting(fmt.Sprintf("%d", msg.ChatID()), "AudioMsg") == "1":
|
||||
// Предполагаем, что у аудио здесь всегда не ноль.
|
||||
if msg.Message.Audio.Duration != 0 {
|
||||
delMsg(msg)
|
||||
|
||||
result = true
|
||||
}
|
||||
|
||||
case GetSetting(fmt.Sprintf("%d", msg.ChatID()), "PhotoMsg") == "1":
|
||||
// Обычное сообщение не содержит фоток.
|
||||
if len(msg.Message.Photo) != 0 {
|
||||
delMsg(msg)
|
||||
|
||||
result = true
|
||||
}
|
||||
|
||||
case GetSetting(fmt.Sprintf("%d", msg.ChatID()), "VideoMsg") == "1":
|
||||
// Предполагаем, что у видео здесь всегда не ноль.
|
||||
if msg.Message.Video.Duration != 0 {
|
||||
delMsg(msg)
|
||||
|
||||
result = true
|
||||
}
|
||||
|
||||
case GetSetting(fmt.Sprintf("%d", msg.ChatID()), "VideoNoteMsg") == "1":
|
||||
// Предполагаем, что у видео-заметки здесь всегда не ноль.
|
||||
if msg.Message.VideoNote.Duration != 0 {
|
||||
delMsg(msg)
|
||||
|
||||
result = true
|
||||
}
|
||||
|
||||
case GetSetting(fmt.Sprintf("%d", msg.ChatID()), "AnimationMsg") == "1":
|
||||
// Предполагаем, что у анимации здесь всегда не ноль.
|
||||
if msg.Message.Animation.Duration != 0 {
|
||||
delMsg(msg)
|
||||
|
||||
result = true
|
||||
}
|
||||
|
||||
case GetSetting(fmt.Sprintf("%d", msg.ChatID()), "StickerMsg") == "1":
|
||||
// Предполагаем, что FileID не пустое только у стикера.
|
||||
if msg.Message.Sticker.FileID != "" {
|
||||
delMsg(msg)
|
||||
|
||||
result = true
|
||||
}
|
||||
|
||||
case GetSetting(fmt.Sprintf("%d", msg.ChatID()), "DiceMsg") == "1":
|
||||
// Предполагаем, что Value > 0 только у дайса.
|
||||
if msg.Message.Dice.Value != 0 {
|
||||
delMsg(msg)
|
||||
|
||||
result = true
|
||||
}
|
||||
|
||||
case GetSetting(fmt.Sprintf("%d", msg.ChatID()), "GameMsg") == "1":
|
||||
// Предполагаем, что title только у game-а.
|
||||
if msg.Message.Game.Title != "" {
|
||||
delMsg(msg)
|
||||
|
||||
result = true
|
||||
}
|
||||
|
||||
case GetSetting(fmt.Sprintf("%d", msg.ChatID()), "PollMsg") == "1":
|
||||
// Предполагаем, что title только у game-а.
|
||||
if msg.Message.Poll.Question != "" {
|
||||
delMsg(msg)
|
||||
|
||||
result = true
|
||||
}
|
||||
|
||||
case GetSetting(fmt.Sprintf("%d", msg.ChatID()), "DocumentMsg") == "1":
|
||||
// Предполагаем, что FileID есть только у document-а.
|
||||
if msg.Message.Document.FileID != "" {
|
||||
delMsg(msg)
|
||||
|
||||
result = true
|
||||
}
|
||||
|
||||
// Некоторые рекламные товарищи пытаются срать своими каналами в чятик это тоже можно зацензурить ботом и это
|
||||
// пидорство он будет удалять asap.
|
||||
// 136817688 - это специальный id пользователя, который принимает облик канала, на него можно нажать и попасть
|
||||
// на рекламируемый канал.
|
||||
case GetSetting(fmt.Sprintf("%d", msg.ChatID()), "ChanMsg") == "1":
|
||||
if msg.Message.From.ID == 136817688 {
|
||||
delMsg(msg)
|
||||
|
||||
result = true
|
||||
}
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
/* vim: set ft=go noet ai ts=4 sw=4 sts=4: */
|
||||
Reference in New Issue
Block a user