Skip to content

Commit

Permalink
Fix
Browse files Browse the repository at this point in the history
  • Loading branch information
Beniamiiin committed Dec 1, 2023
1 parent 013af3e commit 1e3fb18
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 87 deletions.
85 changes: 1 addition & 84 deletions internal/tg_bot/commands/access_governance_bot/start.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import (
"access_governance_system/internal/db/models"
"access_governance_system/internal/db/repositories"
"access_governance_system/internal/tg_bot/commands"
tgbot "access_governance_system/internal/tg_bot/extension"
"fmt"
"strings"

Expand Down Expand Up @@ -35,8 +34,6 @@ func (c *startCommand) CanHandle(command string) bool {
}

func (c *startCommand) Handle(text, arguments string, user *models.User, chatID int64) []tgbotapi.Chattable {
var messages = []tgbotapi.Chattable{}

parseMode := tgbotapi.ModeMarkdownV2

messageText := tgbotapi.EscapeText(parseMode, fmt.Sprintf(`
Expand All @@ -51,86 +48,6 @@ func (c *startCommand) Handle(text, arguments string, user *models.User, chatID
messageText = strings.Replace(messageText, "Menu", "*Menu*", -1)
message := tgbotapi.NewMessage(chatID, messageText)
message.ParseMode = parseMode
messages = append(messages, message)

if user.Role == models.UserRoleSeeder && user.DiscordID == 0 {
message := c.createInstructionMessageForSeeder(chatID)

if message == nil {
return []tgbotapi.Chattable{tgbot.DefaultErrorMessage(chatID)}
}

messages = append(messages, message)
}

return messages
}

func (c *startCommand) createInstructionMessageForSeeder(chatID int64) tgbotapi.Chattable {
if c.bot == nil {
var err error
c.bot, err = tgbotapi.NewBotAPI(c.config.AccessGovernanceBot.Token)
if err != nil {
c.logger.Fatalf("could not create bot: %v", err)
return nil
}
}

seedersChatInviteLink, err := c.createSeedersChatInviteLink()
if err != nil {
c.logger.Fatalf("could not create seeders chat invite link: %v", err)
return nil
}

membersChatInviteLink, err := c.createMembersChatInviteLink()
if err != nil {
c.logger.Fatalf("could not create members chat invite link: %v", err)
return nil
}

messageText := fmt.Sprintf(`
Я заметил, что ты являешься сидером, но ты еще не полностью авторизован в нашем сообществе.
Для того, чтобы авторизоваться тебе надо:
1. Вступить в нашу группу для seeders - %s
2. Вступить в нашу группу для members - %s
3. Подключиться к нашему discord серверу - %s
4. Отправить команду %s в чате в discord
`, seedersChatInviteLink, membersChatInviteLink, c.config.DiscordInviteLink, "`!authorize`")

message := tgbotapi.NewMessage(chatID, messageText)
message.DisableWebPagePreview = true
message.ParseMode = tgbotapi.ModeMarkdown

return message
}

func (c *startCommand) createMembersChatInviteLink() (string, error) {
inviteLinkConfig := tgbotapi.ChatInviteLinkConfig{
ChatConfig: tgbotapi.ChatConfig{
ChatID: c.config.App.MembersChatID,
},
}

inviteLink, err := c.bot.GetInviteLink(inviteLinkConfig)
if err != nil {
return "", err
}

return inviteLink, nil
}

func (c *startCommand) createSeedersChatInviteLink() (string, error) {
inviteLinkConfig := tgbotapi.ChatInviteLinkConfig{
ChatConfig: tgbotapi.ChatConfig{
ChatID: c.config.App.SeedersChatID,
},
}

inviteLink, err := c.bot.GetInviteLink(inviteLinkConfig)
if err != nil {
return "", err
}

return inviteLink, nil
return []tgbotapi.Chattable{message}
}
62 changes: 59 additions & 3 deletions internal/tg_bot/handlers/access_governance_bot/command_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,11 +78,37 @@ func (h *accessGovernanceBotCommandHandler) Handle(bot *tgbotapi.BotAPI, update
continue
}

text := fmt.Sprintf(`
Привет, %s! Добро пожаловать в чат %s.
var text string
if user.Role == models.UserRoleSeeder {
seedersChatInviteLink, err := h.createSeedersChatInviteLink(bot)
if err != nil {
h.logger.Fatalf("could not create seeders chat invite link: %v", err)
continue
}

membersChatInviteLink, err := h.createMembersChatInviteLink(bot)
if err != nil {
h.logger.Fatalf("could not create members chat invite link: %v", err)
continue
}

text = fmt.Sprintf(`
Привет, %s! Добро пожаловать в сообщество %s.
Для того, чтобы авторизоваться тебе надо:
1. Вступить в нашу группу для seeders - %s
2. Вступить в нашу группу для members - %s
3. Подключиться к нашему discord серверу - %s
4. Отправить команду %s в чате в discord
`, newChatMember.FirstName, h.config.App.CommunityName, seedersChatInviteLink, membersChatInviteLink, h.config.DiscordInviteLink, "`!authorize`")
} else {
text = fmt.Sprintf(`
Привет, %s! Добро пожаловать в сообщество %s.
Для того, чтобы авторизоваться тебе надо подключиться к нашему discord серверу(%s) и отправить команду %s в чате в discord.
`, newChatMember.FirstName, h.config.App.CommunityName, h.config.DiscordInviteLink, "`!authorize`")
`, newChatMember.FirstName, h.config.App.CommunityName, h.config.DiscordInviteLink, "`!authorize`")
}

message := tgbotapi.NewMessage(newChatMember.ID, text)
message.DisableWebPagePreview = true
message.ParseMode = tgbotapi.ModeMarkdown
Expand Down Expand Up @@ -234,3 +260,33 @@ func (h *accessGovernanceBotCommandHandler) tryToHandleQueryCallback(query strin
h.logger.Errorw("received unknown command", "command", command)
return []tgbotapi.Chattable{}
}

func (h *accessGovernanceBotCommandHandler) createMembersChatInviteLink(bot *tgbotapi.BotAPI) (string, error) {
inviteLinkConfig := tgbotapi.ChatInviteLinkConfig{
ChatConfig: tgbotapi.ChatConfig{
ChatID: h.config.App.MembersChatID,
},
}

inviteLink, err := bot.GetInviteLink(inviteLinkConfig)
if err != nil {
return "", err
}

return inviteLink, nil
}

func (h *accessGovernanceBotCommandHandler) createSeedersChatInviteLink(bot *tgbotapi.BotAPI) (string, error) {
inviteLinkConfig := tgbotapi.ChatInviteLinkConfig{
ChatConfig: tgbotapi.ChatConfig{
ChatID: h.config.App.SeedersChatID,
},
}

inviteLink, err := bot.GetInviteLink(inviteLinkConfig)
if err != nil {
return "", err
}

return inviteLink, nil
}

0 comments on commit 1e3fb18

Please sign in to comment.