122 lines
3.8 KiB
Go
122 lines
3.8 KiB
Go
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: */
|