0

[WIP] Move to go project layout, remove logrus & co from vendored libs

This commit is contained in:
eleksir
2025-10-31 19:18:15 +03:00
parent d8a92b37fc
commit 490677de40
44 changed files with 1320 additions and 4501 deletions

69
internal/tg/help.go Normal file
View File

@@ -0,0 +1,69 @@
package tg
import (
"fmt"
"github.com/NicoNex/echotron/v3"
"github.com/davecgh/go-spew/spew"
)
// Help Выводит в чат сообщение с основными командами бота.
func Help(cmd *echotron.Update) (bool, error) {
help := "```\n"
help += fmt.Sprintf("%shelp | %sпомощь - список команд", Config.Csign, Config.Csign)
help += fmt.Sprintf("%sanek | %sанек | %sанекдот - рандомный анекдот с anekdot.ru", Config.Csign, Config.Csign, Config.Csign)
help += fmt.Sprintf("%sbuni - рандомный стрип hapi buni", Config.Csign)
help += fmt.Sprintf("%sbunny | %srabbit | %sкролик - кролик", Config.Csign, Config.Csign, Config.Csign)
help += fmt.Sprintf("%scat | %sкис - кошечка", Config.Csign, Config.Csign)
help += fmt.Sprintf("%scoin | %sмонетка - подбросить монетку - орёл или решка?", Config.Csign, Config.Csign)
help += fmt.Sprintf("%sdig | %sкопать - заняться археологией", Config.Csign, Config.Csign)
help += fmt.Sprintf("%sdrink | %sпраздник - какой сегодня праздник?", Config.Csign, Config.Csign)
help += fmt.Sprintf("%sfish | %sрыба | %sрыбка - порыбачить", Config.Csign, Config.Csign, Config.Csign)
help += fmt.Sprintf("%sfishing | %sрыбалка - порыбачить", Config.Csign, Config.Csign)
help += fmt.Sprintf("%sf | %sф - рандомная фраза из сборника цитат fortune_mod", Config.Csign, Config.Csign)
help += fmt.Sprintf("%sfortune | %sфортунка - рандомная фраза из сборника цитат fortune_mod", Config.Csign, Config.Csign)
help += fmt.Sprintf("%sfox | %sлис - лисичка", Config.Csign, Config.Csign)
help += fmt.Sprintf("%sfriday | %sпятница - а не пятница ли сегодня?", Config.Csign, Config.Csign)
help += fmt.Sprintf("%sfrog | %sлягушка - лягушка", Config.Csign, Config.Csign)
help += fmt.Sprintf("%shorse | %sлошадка - лошадка", Config.Csign, Config.Csign)
help += fmt.Sprintf("%slat | %sлат - сгенерить фразу из крылатых латинских выражений", Config.Csign, Config.Csign)
help += fmt.Sprintf("%smonkeyuser - рандомный стрип MonkeyUser", Config.Csign)
help += fmt.Sprintf("%sowl | %sсова | %sсыч - сова", Config.Csign, Config.Csign, Config.Csign)
help += fmt.Sprintf("%sproverb | %sпословица - рандомная русская пословица", Config.Csign, Config.Csign)
help += fmt.Sprintf("%sping | %sпинг - попинговать бота", Config.Csign, Config.Csign)
help += fmt.Sprintf("%sroll | %sdice | %sкости - бросить кости", Config.Csign, Config.Csign, Config.Csign)
help += fmt.Sprintf("%ssnail | %sулитка - улитка", Config.Csign, Config.Csign)
help += fmt.Sprintf("%sver | %sversion | %sверсия - что-то про версию ПО", Config.Csign, Config.Csign, Config.Csign)
help += fmt.Sprintf("%sw <город> | %sп <город> - погода в указанном городе", Config.Csign, Config.Csign)
help += fmt.Sprintf("%sweather <город> - погода в указанном городе", Config.Csign)
help += fmt.Sprintf("%sпогода <город> - погода в указанном городе", Config.Csign)
help += fmt.Sprintf("%sпогодка <город> - погода в указанном городе", Config.Csign)
help += fmt.Sprintf("%sпогадка <город> - погода в указанном городе", Config.Csign)
help += fmt.Sprintf("%sxkcd - рандомный стрип с сайта xkcd.ru", Config.Csign)
help += fmt.Sprintf("%skarma фраза | %sкарма фраза - посмотреть карму фразы", Config.Csign, Config.Csign)
help += "```\n"
help += "Но на самом деле я бот больше для общения, чем для исполнения команд.\n"
help += "Поговоришь со мной?"
resp, err := tg.SendMessage(
help,
cmd.Message.Chat.ID,
&echotron.MessageOptions{ParseMode: "MarkdownV2"},
)
if err != nil || !resp.Ok {
// TODO: поддержать миграцию группы в супергруппу, поддержать вариант, когда бот замьючен.
// Красиво оформить ошибку, с полями итд, как tracedump, только ошибка.
// N.B. тут может быть сообщение о том, что группа превратилась в супергруппу, или что бот не имеет прав писать
// сообщения в чятик. Это надо бы отслеживать и хэндлить.
return true, fmt.Errorf(
"unable to send message to telegram api: %w\nResponse dump: %s",
err,
spew.Sdump(resp),
)
}
return true, nil
}
/* vim: set ft=go noet ai ts=4 sw=4 sts=4: */