Archived
1
This repository has been archived on 2022-11-04. You can view files and clone it, but cannot push or open issues or pull requests.
i2_bot/lib/talkers/help.go

213 lines
23 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// i2_bot Instinct PokememBro Bot
// Copyright (c) 2017-2018 Vladimir "fat0troll" Hodakov
package talkers
import (
"time"
"github.com/go-telegram-bot-api/telegram-bot-api"
"github.com/fat0troll/i2_bot/lib/config"
"github.com/fat0troll/i2_bot/lib/constants"
"github.com/fat0troll/i2_bot/lib/dbmapping"
)
// AcademyMessage gives user link to Bastion
func (t *Talkers) AcademyMessage(update *tgbotapi.Update, playerRaw *dbmapping.Player) string {
message := ""
if playerRaw.LeagueID > 1 {
message = "Иди нахуй, шпионское отродье"
} else if playerRaw.LeagueID == 0 {
message = "Заполни профиль и попробуй ещё раз"
} else {
message += "*Академия Инстинкта*\n"
message += "Чат для обучения новичков предумростям игры расположен по ссылке: https://t.me/joinchat/G2vME04jk02v2etRmumylg"
}
c.Sender.SendMarkdownAnswer(update, message)
return constants.UserRequestSuccess
}
// BastionMessage gives user link to Bastion
func (t *Talkers) BastionMessage(update *tgbotapi.Update, playerRaw *dbmapping.Player) string {
message := ""
if playerRaw.LeagueID > 1 {
message = "Иди нахуй, шпионское отродье"
} else if playerRaw.LeagueID == 0 {
message = "Заполни профиль и попробуй ещё раз"
} else {
message += "*Бастион Инстинкта*\n"
message += "Общий чат лиги расположен по ссылке: https://t.me/joinchat/G2vME0mIX-QHjjxE\\_JBzoQ"
}
c.Sender.SendMarkdownAnswer(update, message)
return constants.UserRequestSuccess
}
// GamesMessage gives user link to Bastion
func (t *Talkers) GamesMessage(update *tgbotapi.Update, playerRaw *dbmapping.Player) string {
message := ""
if playerRaw.LeagueID > 1 {
message = "Иди нахуй, шпионское отродье"
} else if playerRaw.LeagueID == 0 {
message = "Заполни профиль и попробуй ещё раз"
} else {
message += "*Игровой чат Инстинкта*\n"
message += "Чат для игр в различные Телеграм-игрушки: https://t.me/joinchat/AAkt5E6bs\\_tGNybxbFMAxA"
}
c.Sender.SendMarkdownAnswer(update, message)
return constants.UserRequestSuccess
}
// HelpMessage gives user all available commands
func (t *Talkers) HelpMessage(update *tgbotapi.Update, playerRaw *dbmapping.Player) string {
message := "*Бот Инстинкта Enhanced.*\n\n"
message += "Текущая версия: *" + config.VERSION + "*\n\n"
message += "Список команд\n\n"
message += "\\* /me посмотреть свой сохраненный профиль в боте\n"
message += "\\* /best посмотреть 5 лучших покемонов для поимки\n"
message += "\\* /advice посмотреть 5 самых дорогих покемонов для поимки\n"
message += "\\* /best\\_all посмотреть всех лучших покемонов для поимки\n"
message += "\\* /advice\\_all посмотреть всех самых дорогих покемонов для поимки\n"
if playerRaw.CreatedAt.Before(time.Now().Add(30 * 24 * 60 * 60 * time.Second)) {
message += "\\* /best\\_nofilter посмотреть пять лучших покемонов для поимки _без фильтра по элементам_ (полезно для сборки максимально топовой руки на высоком уровне)\n"
}
message += "\\* /top — топ игроков лиги\n"
message += "\\* /top\\_my — топ игроков лиги твоего уровня\n"
message += "\\* /pokedeks получить список известных боту покемемов\n"
message += "\\* /reminders — настроить оповещения на Турнир лиг\n"
message += "\\* /academy — Академия Инстинкта\n"
message += "\\* /bastion — Бастион Инстинкта\n"
message += "\\* /games\\_chat — Игровой чат Инстинкта\n"
message += "\\* /faq — получить ответы на часто задаваемые вопросы\n"
if c.Users.PlayerBetterThan(playerRaw, "admin") {
message += "\\* /send\\_all _текст_ — отправить сообщение всем пользователям бота\n"
message += "\\* /send\\_league _текст_ — отправить сообщение всем пользователям бота, у которых профиль лиги Инстинкт\n"
message += "\\* /chats — получить список групп, в которых работает бот.\n"
message += "\\* /squads — получить список отрядов.\n"
message += "\\* /pin _номера чатов_ _текст_ — отправить сообщение в чаты с номерами. Сообщение будет автоматичекси запинено. Пример: \"/pin 2,3,5 привет мир\". Внимание: между номерами чатов ставятся запятые без пробелов! Всё, что идёт после второго пробела в команде — сообщение\n"
message += "\\* /pin\\_all _текст_ — отправить сообщение во все группы, где находится бот. Сообщение будет автоматически запинено.\n"
message += "\\* /orders — просмотреть приказы на атаку\n"
}
if c.Users.PlayerBetterThan(playerRaw, "academic") {
message += "\\* /users — просмотреть зарегистрированных пользователей бота\n"
message += "\\* /find\\_level _цифра_ — показать всех игроков соответствующего уровня. Учитываются профили за 72 часа\n"
message += "\\* /find\\_user _строка_ — найти игрока в боте по его нику или имени. Ник ищется без собачки в начале\n"
}
message += "\\* /help выводит данное сообщение\n"
message += "\n\n"
message += "Техническая поддержка бота: https://t.me/joinchat/AAkt5EgFBU9Q9iXJMvDG6A\n"
message += "\n*Благодарности*:\n"
message += "Для поддержания сервера и его стабильной оплаты нужны средства. К сожалению, далеко не всегда они находятся в нужный момент, но всегда есть люди, готовые помочь. Я благодарю их за поддержку:\n\n"
message += "\\* @Lenorag\n"
message += "\\* @vanushinvi\n"
message += "\\* @Numb13\n"
message += "\\* @TechniqueOne\n"
message += "\\* @Antropophag\n"
message += "\\* @nokio404\n"
message += "Выразить благодарность и попасть в список: 4377 7300 0246 7362\n"
message += "_Топ ранжируется по размеру благодарности. Здесь может быть ваша реклама!_"
c.Sender.SendMarkdownAnswer(update, message)
return constants.UserRequestSuccess
}
// FAQMessage prints frequently asked questions
func (t *Talkers) FAQMessage(update *tgbotapi.Update) string {
message := "*Часто задаваемые вопросы:*\n\n"
message += "💎Кристаллы\n"
message += "_Зачем тут донатить?_\n"
message += "Самое полезное на начальных уровнях это:\n1. Увеличение лимита ⭕️покеболов до 24 за 100💎\n2. Турболовля за 20💎, покеболы приходят не раз в час, а каждые 40 секунд, время действия турболовли 30 минут, за это время ты получишь 45 покеболов. Охота также ускоряется: вместо 2 минут, охота длится 40 секунд.\n"
message += "_Где и как задонатить?_\n"
message += "В игровом боте напиши /crystalls и перейди по выданной ссылке. Стоимость кристаллов зависит от количества: чем больше ты их купишь за один раз, тем дешевле они обойдутся (от 3 до 10 рублей за 1💎). Если это твой первый донат, то купленное тобой количество кристаллов удвоится. Имеет смысл в первый раз закупать большое количество!\n\n"
message += "⭕️Покеболы\n"
message += "_Как увеличить лимит покеболов?_\n"
message += "Вариантов несколько:\n1. Купить увеличение лимита покеболов до 24 за 100💎\n2. За каждый 30 покемем в покедексе ты получишь +1 к лимиту покеболов\n3. Отправь игровому боту /spam и получи ссылку. Каждый новый игрок получивший 2 уровень и пришедший по твоей ссылке принесет тебе 1 покебол и увеличение лимита покеболов на 1.\n4. Перейти по ссылке: https://telegram.me/storebot?start=pokemembrobot, оставить отзыв и переслать переписку с @storebot в тех поддержку игры @PBhelp\nТак как за кристаллы ты увеличиваешь лимит покеболов не НА 24, а ДО 24, имеет смысл купить увеличение как можно раньше.\n"
message += "_Какой лимит покеболов самый оптимальный?_\n"
message += "Как показывает практика, лучший лимит (но и самый труднодостижимый) — 90 шаров. Достигнув его и заполнив целиком, вы сможете, запустив ТурбоЛовлю, сходить на 45 охот подряд.\n\n"
message += "🐱Покемемы\n"
message += "_Я поймал второго покемона, но не могу его взять в руку, почему?_\n"
message += "Покемоны 4 и более уровней не могут повторяться в руке (т.е. должны быть разными).\n"
message += "_А щит на покемемах что дает?_\n"
message += "Чтобы поймать покемема с щитом, тебе нужно иметь атаку больше их щита.\n"
message += "_Что такое MP?_\n"
message += "Пока не знаем (в игре не используется).\n"
message += "_Есть смысл дальше вкачивать покемемы?_\n"
message += "/best\\_all поможет сориентироваться, хватает ли тебе атаки на топового покемема твоего уровня, или нет.\n"
message += "_Какие покемоны для меня топ? Где ловить топов?_\n"
message += "/best, /best\\_all\n"
message += "_Что значат перед названием покемема ромбы?_\n"
message += "🔸- Илитный: +15% ⚔️ атака. Максимальный уровень - 8.\n🔶- Супер Илитный: +25% ⚔️ атака. Максимальный уровень - 10.\n🔹- Либераха: +10% ⚔️ атаки покемемам с теми же элементами, что у Либерахи. Максимальный уровень - 8.\n🔷- Супер Либераха: +20% атаки покемемам с теми же элементами, что у Супер Либерахи. Максимальный уровень - 10.\n\n"
message += "🥚 Яйца\n"
message += "_Что такое яйцо и зачем оно?_\n"
message += "Яйцо — это бонус, который ты получаешь в битвах лиг, из яйца дают покемема твоей стихии и на 1 грейд больше твоего лвла (максимум 9го), так же яйцо можно получить за ежедневную активность.\n"
message += "_Сколько яиц я получу в битве?_\n"
message += "1 яйцо за участие в бою, +2 яйца если мы проиграем и красным и синим. А также по +2 яйца если выиграем за явным преимуществом, если оппоненты выставят против нас в 20 раз меньше атаки. Максимум можно получить по 5 яиц с битвы.\n"
message += "_Если у меня яйцо 96/96 и я, не открывая его апну лвл - оно станет 96/192 или 0/192?_\n"
message += "Яйца остаются, увеличивается необходимое количество для открытия, в твоем случае станет 96/192\n"
message += "_Если не открывать 🥚яйцо, когда оно наберется до нужного количества, оно не будет дальше расти?_\n"
message += "Не будет."
c.Sender.SendMarkdownAnswer(update, message)
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"
}