Archived
1

Add /rules command and trigger for all group chat commands

This commit is contained in:
Vladimir Hodakov 2018-05-06 05:57:52 +04:00
parent 07c24b8822
commit 2c72bc8023
6 changed files with 56 additions and 1 deletions

View File

@ -5,7 +5,7 @@ package connections
import (
"bitbucket.org/pztrn/mogrus"
_ "github.com/go-sql-driver/mysql"
_ "github.com/go-sql-driver/mysql" // MySQL driver for sqlx
"github.com/go-telegram-bot-api/telegram-bot-api"
"github.com/jmoiron/sqlx"
"source.wtfteam.pro/i2_bot/i2_bot/lib/config"

View File

@ -63,6 +63,10 @@ func (r *Router) routeGroupRequest(update tgbotapi.Update, playerRaw *dbmapping.
switch {
case update.Message.Command() == "long":
return c.Talkers.LongMessage(&update)
default:
if update.Message.IsCommand() {
return c.Talkers.RulesMessage(&update)
}
}
// Ah, we're still here

View File

@ -67,6 +67,9 @@ func (r *Router) routePrivateRequest(update tgbotapi.Update, playerRaw *dbmappin
return "ok"
case update.Message.Command() == "faq":
return c.Talkers.FAQMessage(&update)
case update.Message.Command() == "rules":
return c.Talkers.RulesMessage(&update)
case update.Message.Command() == "academy":
c.Talkers.AcademyMessage(&update, playerRaw)
return "ok"

View File

@ -165,3 +165,48 @@ func (t *Talkers) FAQMessage(update *tgbotapi.Update) string {
return constants.UserRequestSuccess
}
// RulesMessage prints chat rules
func (t *Talkers) RulesMessage(update *tgbotapi.Update) string {
if update.Message.Chat.IsPrivate() {
message := "*Правила чатов лиги Инстинкт*\n_Версия 2.1, принята 17.12.2017, с дополнениями от 24.01.2018, с дополнениями от 04.04.2018._\n\n"
message += "*Запрещённые в чате вещи:*\n"
message += "1. Бессмысленный флуд — стикерами, смайлами, множественным тыканьем «команд» (сообщений, начинающихся с /), множественными короткими сообщениями\n"
message += "2. Реклама других игр или проектов. Простого обсуждения игр и проектов без ссылок на них это не касается. За обнуление аккаунта в игре PokememBro из-за обсуждений другой игры ответственности администрация чата не несёт.\n"
message += "3. Бессмысленная ругань, хамство по отношению к другим участникам чата. То, что вы давно знакомы и всю жизнь общаетесь на «Слышь, ублюдок ёбаный» администрация чата знать не обязана.\n"
message += "4. Пародирование ников, аватаров или других опознавательных признаков других участников чата. Разбан по данному пункту правил возможен лишь после переименования.\n"
message += "5. Оспаривание приказа совета на атаку. Обсуждение того, кого атаковать, и принятие решения об этом, является прерогативой командиров отрядов. Они же и несут ответственность в случае поражения своего отряда. Призыв атаковать, противоречащий приказу Совета или командира отряда — запрещён.\n"
message += "6. Дезинформирование других игроков, спрашивающих цель атаки.\n"
message += "7. Отправка в чат одного и того же сообщения несколько раз подряд, или отправка одного сообщения в разные чаты одновременно. Степень похожести двух сообщений определяется администрацией чата.\n"
message += "8. Отправка одних и тех же вопросов наставникам Академии. Самые часто задаваемые вопросы уже освещены в справке @i2\\_bot (команда /faq). Если вы считаете, что вопрос следует добавить в /faq — пишите об этом @Eigot. Первая отправка такого вопроса не карается, последующие — на усмотрение наставника Академии.\n"
message += "9. Обсуждение вещей, запрещенных законодательством Российской Федерации и/или одной из стран Европейского союза. \n"
message += "10. Политический или около-политический, религиозный, половой или националистический флейм в любой форме.\n"
message += "11. Указание участникам чата на то, что они нарушают данные правила. Оставьте работу администрации модераторам. Хотите оповестить модераторов о том, что в чате нарушаются правила — пишите им в личные сообщения.\n"
message += "12. Создание твинков (дополнительных аккаунтов) для преодоления ограничений, наложенных на основной аккаунт, ведёт к увеличению ограничения на основном аккаунте вдвое и пожизненному бану твинка.\n"
message += "13. Вынос за пределы чатов лиги того, что было отправлено в чаты лиги (даже если это ваше собственное сообщение). Переписка с ботом @i2\\_bot и игровые профили тоже подпадают под это правило — их пересылать куда-либо, кроме чатов лиги и бота @i2\\_bot, нельзя.\n"
message += "14. Использование игровых ботов (и вообще любых ботов), кроме @i2\\_bot, в чатах лиги, за исключением специализированного. Ссылку на специализированный чат можно узнать, отправив в личные сообщения @i2\\_bot команду /games\\_chat.\n\n"
c.Sender.SendMarkdownAnswer(update, message)
message = "*Применение правил*:\n"
message += "1. Администрация чата является ответственной за применение правил и чистоту на территории чатов лиги.\n"
message += "2. В Telegram существует исключительно постмодерация. Из этого следует: то, что сообщение существует в чате, не означает того, что оно соответствует правилам.\n"
message += "3. Срок и вид наказания (мут/бан) устанавливается модератором чата в каждом случае применения правил индивидуально. В каждом случае учитывается поведение пользователя до, во время и после инцидента, влекущего за собой применение правил. \n"
message += "4. Модераторы чатов отчитываются Совету лиги в установленной Советом форме, доступной исключительно для модераторов и членов Совета Лиги. Модераторы чатов не обязаны пояснять свои действия никому из других пользователей чата, включая авторов игры PokememBro, кроме членов Совета, за исключением случаев, когда их действия нарушают правила игры PokememBro.\n"
message += "5. В случае ограничения пользователя по одному из пунктов правил, кроме случая, если ограничение установлено пожизненно без права на амнистию, разрешается обратиться к одному из модераторов чата с просьбой о разблокировке с обещанием не нарушать впредь правила. Злоупотребляющие данным пунктом пользователи могут получить пожизненный бан без права на амнистию за любое нарушение.\n"
message += "6. Обсуждение ограничения пользователя допускается лишь в форме личного обращения пользователя к модератору (в ЛС). Вынос обсуждения ограничения пользователя в одном чате лиги в другой чат ведёт лишь к увеличению наказания (и шансу получить пожизненный бан).\n"
message += "7. Администрация чата применяет правила в соответствии со своей совестью, убеждениями и обстановкой в чате. Не следует сомневаться в компетенции модераторов — их назначил Совет лиги, и только он может решать, хорошо они исполняют свою работу, или нет.\n\n"
message += "Правила могут быть изменены без предупреждения в любой момент времени.\n\n"
message += "Данные правила созданы с целью поддерживать порядок в чатах лиги. В них нет задачи ущемить кого-либо. Уважайте других пользователей — и вас будут уважать"
c.Sender.SendMarkdownAnswer(update, message)
} else {
message := "Не нарушай правила, боженька молниями отхуячит!\n\nПрочитать правила можно, отправив команду /rules в личные сообщения @i2\\_bot."
c.Sender.SendMarkdownAnswer(update, message)
}
return "ok"
}

View File

@ -17,6 +17,7 @@ type TalkersInterface interface {
GamesMessage(update *tgbotapi.Update, playerRaw *dbmapping.Player) string
HelpMessage(update *tgbotapi.Update, playerRaw *dbmapping.Player) string
FAQMessage(update *tgbotapi.Update) string
RulesMessage(update *tgbotapi.Update) string
AnyMessageUnauthorized(update *tgbotapi.Update) string
BanError(update *tgbotapi.Update) string

View File

@ -36,6 +36,8 @@ func (w *Welcomer) groupWelcomeUser(update *tgbotapi.Update, newUser *tgbotapi.U
message += "Алгоритм, как зарегистрироваться:\n\n1) Нажимаешь кнопку ниже, и выбираешь @PokememBroBot как цель для сообщения\n2) В ответ получаешь длинное сообщение-статистику.\n3) Полученное сообщение форвардишь в @i2\\_bot (не забудь заранее нажать там /start!)\n4) Готово, вы восхитительны."
message += "\n\nПравила чатов лиги Инстинкт:/rules. Незнание правил — отягчающее обстоятельство."
msg := tgbotapi.NewMessage(update.Message.Chat.ID, message)
msg.ParseMode = "Markdown"
keyboard := tgbotapi.InlineKeyboardMarkup{}