add dev.sh, code refactor, add village continent to its name
This commit is contained in:
parent
f6076f02d2
commit
cf6a26194f
147
cron/cron.go
147
cron/cron.go
|
@ -1,18 +1,13 @@
|
||||||
package cron
|
package cron
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
|
||||||
"log"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
shared_models "github.com/tribalwarshelp/shared/models"
|
|
||||||
|
|
||||||
"github.com/tribalwarshelp/golang-sdk/sdk"
|
"github.com/tribalwarshelp/golang-sdk/sdk"
|
||||||
|
|
||||||
"github.com/tribalwarshelp/dcbot/discord"
|
"github.com/tribalwarshelp/dcbot/discord"
|
||||||
"github.com/tribalwarshelp/dcbot/server"
|
"github.com/tribalwarshelp/dcbot/server"
|
||||||
"github.com/tribalwarshelp/dcbot/tribe"
|
"github.com/tribalwarshelp/dcbot/tribe"
|
||||||
"github.com/tribalwarshelp/dcbot/utils"
|
|
||||||
|
|
||||||
"github.com/robfig/cron/v3"
|
"github.com/robfig/cron/v3"
|
||||||
)
|
)
|
||||||
|
@ -24,151 +19,13 @@ type Config struct {
|
||||||
API *sdk.SDK
|
API *sdk.SDK
|
||||||
}
|
}
|
||||||
|
|
||||||
type handler struct {
|
|
||||||
since time.Time
|
|
||||||
serverRepo server.Repository
|
|
||||||
tribeRepo tribe.Repository
|
|
||||||
discord *discord.Session
|
|
||||||
api *sdk.SDK
|
|
||||||
}
|
|
||||||
|
|
||||||
func Attach(c *cron.Cron, cfg Config) {
|
func Attach(c *cron.Cron, cfg Config) {
|
||||||
h := &handler{
|
h := &handler{
|
||||||
since: time.Now(),
|
since: time.Now().Add(-45 * time.Minute),
|
||||||
serverRepo: cfg.ServerRepo,
|
serverRepo: cfg.ServerRepo,
|
||||||
tribeRepo: cfg.TribeRepo,
|
tribeRepo: cfg.TribeRepo,
|
||||||
discord: cfg.Discord,
|
discord: cfg.Discord,
|
||||||
api: cfg.API,
|
api: cfg.API,
|
||||||
}
|
}
|
||||||
c.AddFunc("@every 1m", h.checkEnnoblements)
|
c.AddFunc("@every 1m", h.checkLastEnnoblements)
|
||||||
}
|
|
||||||
|
|
||||||
func (h *handler) loadEnnoblements(worlds []string) map[string]ennoblements {
|
|
||||||
m := make(map[string]ennoblements)
|
|
||||||
|
|
||||||
for _, w := range worlds {
|
|
||||||
es, err := h.api.Ennoblements.Browse(w, &sdk.EnnoblementInclude{
|
|
||||||
NewOwner: true,
|
|
||||||
Village: true,
|
|
||||||
NewOwnerInclude: sdk.PlayerInclude{
|
|
||||||
Tribe: true,
|
|
||||||
},
|
|
||||||
OldOwner: true,
|
|
||||||
OldOwnerInclude: sdk.PlayerInclude{
|
|
||||||
Tribe: true,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
if err != nil {
|
|
||||||
log.Printf("%s: %s", w, err.Error())
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
m[w] = filterEnnoblements(es, h.since)
|
|
||||||
}
|
|
||||||
|
|
||||||
return m
|
|
||||||
}
|
|
||||||
|
|
||||||
func (h *handler) loadLangVersions(worlds []string) map[shared_models.LanguageTag]*shared_models.LangVersion {
|
|
||||||
languageTags := []shared_models.LanguageTag{}
|
|
||||||
cache := make(map[shared_models.LanguageTag]bool)
|
|
||||||
for _, world := range worlds {
|
|
||||||
languageTag := utils.LanguageCodeFromWorldName(world)
|
|
||||||
if languageTag.IsValid() && !cache[languageTag] {
|
|
||||||
cache[languageTag] = true
|
|
||||||
languageTags = append(languageTags, languageTag)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
langVersions := make(map[shared_models.LanguageTag]*shared_models.LangVersion)
|
|
||||||
langVersionsList, err := h.api.LangVersions.Browse(&shared_models.LangVersionFilter{
|
|
||||||
Tag: languageTags,
|
|
||||||
})
|
|
||||||
if err == nil {
|
|
||||||
for _, langVersion := range langVersionsList.Items {
|
|
||||||
langVersions[langVersion.Tag] = langVersion
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
log.Printf("Cannot load lang versions: %s", err.Error())
|
|
||||||
}
|
|
||||||
|
|
||||||
return langVersions
|
|
||||||
}
|
|
||||||
|
|
||||||
func (h *handler) checkEnnoblements() {
|
|
||||||
worlds, err := h.tribeRepo.FetchWorlds(context.Background())
|
|
||||||
if err != nil {
|
|
||||||
log.Print("checkEnnoblements: " + err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
log.Print("checkEnnoblements: worlds: ", worlds)
|
|
||||||
|
|
||||||
servers, total, err := h.serverRepo.Fetch(context.Background(), nil)
|
|
||||||
if err != nil {
|
|
||||||
log.Print("checkEnnoblements: " + err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
log.Print("checkEnnoblements: total number of servers: ", total)
|
|
||||||
|
|
||||||
langVersions := h.loadLangVersions(worlds)
|
|
||||||
|
|
||||||
data := h.loadEnnoblements(worlds)
|
|
||||||
h.since = time.Now()
|
|
||||||
log.Print("checkEnnoblements: loaded ennoblements: ", len(data))
|
|
||||||
|
|
||||||
for _, server := range servers {
|
|
||||||
if server.ConqueredVillagesChannelID == "" && server.LostVillagesChannelID == "" {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
for _, tribe := range server.Tribes {
|
|
||||||
es, ok := data[tribe.World]
|
|
||||||
langVersion, ok2 := langVersions[utils.LanguageCodeFromWorldName(tribe.World)]
|
|
||||||
if ok && ok2 {
|
|
||||||
if server.LostVillagesChannelID != "" {
|
|
||||||
for _, ennoblement := range es.tribeLostVillages(tribe.TribeID) {
|
|
||||||
if !isPlayerTribeNil(ennoblement.NewOwner) &&
|
|
||||||
server.Tribes.Contains(tribe.World, ennoblement.NewOwner.Tribe.ID) {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
newMsgDataConfig := newMessageDataConfig{
|
|
||||||
host: langVersion.Host,
|
|
||||||
world: tribe.World,
|
|
||||||
ennoblement: ennoblement,
|
|
||||||
timezone: langVersion.Timezone,
|
|
||||||
}
|
|
||||||
msgData := newMessageData(newMsgDataConfig)
|
|
||||||
h.discord.SendEmbed(server.LostVillagesChannelID,
|
|
||||||
discord.
|
|
||||||
NewEmbed().
|
|
||||||
SetTitle("Stracona wioska").
|
|
||||||
SetTimestamp(msgData.date).
|
|
||||||
AddField(msgData.world, formatMsgAboutVillageLost(msgData)).
|
|
||||||
MessageEmbed)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if server.ConqueredVillagesChannelID != "" {
|
|
||||||
for _, ennoblement := range es.tribeConqueredVillages(tribe.TribeID) {
|
|
||||||
if !isPlayerTribeNil(ennoblement.OldOwner) &&
|
|
||||||
server.Tribes.Contains(tribe.World, ennoblement.OldOwner.Tribe.ID) {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
newMsgDataConfig := newMessageDataConfig{
|
|
||||||
host: langVersion.Host,
|
|
||||||
world: tribe.World,
|
|
||||||
ennoblement: ennoblement,
|
|
||||||
timezone: langVersion.Timezone,
|
|
||||||
}
|
|
||||||
msgData := newMessageData(newMsgDataConfig)
|
|
||||||
h.discord.SendEmbed(server.ConqueredVillagesChannelID,
|
|
||||||
discord.
|
|
||||||
NewEmbed().
|
|
||||||
SetTitle("Podbita wioska").
|
|
||||||
AddField(msgData.world, formatMsgAboutVillageConquest(msgData)).
|
|
||||||
SetTimestamp(msgData.date).
|
|
||||||
MessageEmbed)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,153 @@
|
||||||
|
package cron
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"log"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
shared_models "github.com/tribalwarshelp/shared/models"
|
||||||
|
|
||||||
|
"github.com/tribalwarshelp/dcbot/discord"
|
||||||
|
"github.com/tribalwarshelp/dcbot/server"
|
||||||
|
"github.com/tribalwarshelp/dcbot/tribe"
|
||||||
|
"github.com/tribalwarshelp/dcbot/utils"
|
||||||
|
"github.com/tribalwarshelp/golang-sdk/sdk"
|
||||||
|
)
|
||||||
|
|
||||||
|
type handler struct {
|
||||||
|
since time.Time
|
||||||
|
serverRepo server.Repository
|
||||||
|
tribeRepo tribe.Repository
|
||||||
|
discord *discord.Session
|
||||||
|
api *sdk.SDK
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *handler) loadEnnoblements(worlds []string) map[string]ennoblements {
|
||||||
|
m := make(map[string]ennoblements)
|
||||||
|
|
||||||
|
for _, w := range worlds {
|
||||||
|
es, err := h.api.Ennoblements.Browse(w, &sdk.EnnoblementInclude{
|
||||||
|
NewOwner: true,
|
||||||
|
Village: true,
|
||||||
|
NewOwnerInclude: sdk.PlayerInclude{
|
||||||
|
Tribe: true,
|
||||||
|
},
|
||||||
|
OldOwner: true,
|
||||||
|
OldOwnerInclude: sdk.PlayerInclude{
|
||||||
|
Tribe: true,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("%s: %s", w, err.Error())
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
m[w] = filterEnnoblements(es, h.since)
|
||||||
|
}
|
||||||
|
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *handler) loadLangVersions(worlds []string) map[shared_models.LanguageTag]*shared_models.LangVersion {
|
||||||
|
languageTags := []shared_models.LanguageTag{}
|
||||||
|
cache := make(map[shared_models.LanguageTag]bool)
|
||||||
|
for _, world := range worlds {
|
||||||
|
languageTag := utils.LanguageCodeFromWorldName(world)
|
||||||
|
if languageTag.IsValid() && !cache[languageTag] {
|
||||||
|
cache[languageTag] = true
|
||||||
|
languageTags = append(languageTags, languageTag)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
langVersions := make(map[shared_models.LanguageTag]*shared_models.LangVersion)
|
||||||
|
langVersionsList, err := h.api.LangVersions.Browse(&shared_models.LangVersionFilter{
|
||||||
|
Tag: languageTags,
|
||||||
|
})
|
||||||
|
if err == nil {
|
||||||
|
for _, langVersion := range langVersionsList.Items {
|
||||||
|
langVersions[langVersion.Tag] = langVersion
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
log.Printf("Cannot load lang versions: %s", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
return langVersions
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *handler) checkLastEnnoblements() {
|
||||||
|
worlds, err := h.tribeRepo.FetchWorlds(context.Background())
|
||||||
|
if err != nil {
|
||||||
|
log.Print("checkLastEnnoblements: " + err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
log.Print("checkLastEnnoblements: worlds: ", worlds)
|
||||||
|
|
||||||
|
servers, total, err := h.serverRepo.Fetch(context.Background(), nil)
|
||||||
|
if err != nil {
|
||||||
|
log.Print("checkLastEnnoblements: " + err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
log.Print("checkLastEnnoblements: total number of discord servers: ", total)
|
||||||
|
|
||||||
|
langVersions := h.loadLangVersions(worlds)
|
||||||
|
|
||||||
|
data := h.loadEnnoblements(worlds)
|
||||||
|
h.since = time.Now()
|
||||||
|
log.Println("checkLastEnnoblements: loaded ennoblements from", len(data), "tribalwars servers")
|
||||||
|
|
||||||
|
for _, server := range servers {
|
||||||
|
if server.ConqueredVillagesChannelID == "" && server.LostVillagesChannelID == "" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
for _, tribe := range server.Tribes {
|
||||||
|
es, ok := data[tribe.World]
|
||||||
|
langVersion, ok2 := langVersions[utils.LanguageCodeFromWorldName(tribe.World)]
|
||||||
|
if ok && ok2 {
|
||||||
|
if server.LostVillagesChannelID != "" {
|
||||||
|
for _, ennoblement := range es.tribeLostVillages(tribe.TribeID) {
|
||||||
|
if !isPlayerTribeNil(ennoblement.NewOwner) &&
|
||||||
|
server.Tribes.Contains(tribe.World, ennoblement.NewOwner.Tribe.ID) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
newMsgDataConfig := newMessageDataConfig{
|
||||||
|
host: langVersion.Host,
|
||||||
|
world: tribe.World,
|
||||||
|
ennoblement: ennoblement,
|
||||||
|
timezone: langVersion.Timezone,
|
||||||
|
}
|
||||||
|
msgData := newMessageData(newMsgDataConfig)
|
||||||
|
h.discord.SendEmbed(server.LostVillagesChannelID,
|
||||||
|
discord.
|
||||||
|
NewEmbed().
|
||||||
|
SetTitle("Stracona wioska").
|
||||||
|
AddField(msgData.world, formatMsgAboutVillageLost(msgData)).
|
||||||
|
SetTimestamp(msgData.date).
|
||||||
|
MessageEmbed)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if server.ConqueredVillagesChannelID != "" {
|
||||||
|
for _, ennoblement := range es.tribeConqueredVillages(tribe.TribeID) {
|
||||||
|
if !isPlayerTribeNil(ennoblement.OldOwner) &&
|
||||||
|
server.Tribes.Contains(tribe.World, ennoblement.OldOwner.Tribe.ID) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
newMsgDataConfig := newMessageDataConfig{
|
||||||
|
host: langVersion.Host,
|
||||||
|
world: tribe.World,
|
||||||
|
ennoblement: ennoblement,
|
||||||
|
timezone: langVersion.Timezone,
|
||||||
|
}
|
||||||
|
msgData := newMessageData(newMsgDataConfig)
|
||||||
|
h.discord.SendEmbed(server.ConqueredVillagesChannelID,
|
||||||
|
discord.
|
||||||
|
NewEmbed().
|
||||||
|
SetTitle("Podbita wioska").
|
||||||
|
AddField(msgData.world, formatMsgAboutVillageConquest(msgData)).
|
||||||
|
SetTimestamp(msgData.date).
|
||||||
|
MessageEmbed)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -46,10 +46,11 @@ func newMessageData(cfg newMessageDataConfig) messageData {
|
||||||
newOwnerTribeTag: "-",
|
newOwnerTribeTag: "-",
|
||||||
}
|
}
|
||||||
if !isVillageNil(cfg.ennoblement.Village) {
|
if !isVillageNil(cfg.ennoblement.Village) {
|
||||||
data.village = fmt.Sprintf("%s (%d|%d)",
|
data.village = fmt.Sprintf("%s (%d|%d) %s",
|
||||||
cfg.ennoblement.Village.Name,
|
cfg.ennoblement.Village.Name,
|
||||||
cfg.ennoblement.Village.X,
|
cfg.ennoblement.Village.X,
|
||||||
cfg.ennoblement.Village.Y)
|
cfg.ennoblement.Village.Y,
|
||||||
|
cfg.ennoblement.Village.Continent())
|
||||||
data.villageURL = utils.FormatVillageURL(cfg.world, cfg.host, cfg.ennoblement.Village.ID)
|
data.villageURL = utils.FormatVillageURL(cfg.world, cfg.host, cfg.ennoblement.Village.ID)
|
||||||
}
|
}
|
||||||
if !isPlayerNil(cfg.ennoblement.OldOwner) {
|
if !isPlayerNil(cfg.ennoblement.OldOwner) {
|
||||||
|
|
|
@ -285,22 +285,32 @@ func (s *Session) handleAddCommand(m *discordgo.MessageCreate, args ...string) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
server, err := s.cfg.API.Servers.Read(world)
|
||||||
|
if err != nil || server == nil {
|
||||||
|
s.SendMessage(m.ChannelID, m.Author.Mention()+fmt.Sprintf(` świat %s jest nieobsługiwany.`, world))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if server.Status == shared_models.ServerStatusClosed {
|
||||||
|
s.SendMessage(m.ChannelID, m.Author.Mention()+fmt.Sprintf(` świat %s jest zamknięty.`, world))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
tribe, err := s.cfg.API.Tribes.Read(world, id)
|
tribe, err := s.cfg.API.Tribes.Read(world, id)
|
||||||
if err != nil || tribe == nil {
|
if err != nil || tribe == nil {
|
||||||
s.SendMessage(m.ChannelID, m.Author.Mention()+fmt.Sprintf(` Plemię o ID: %d nie istnieje na świecie %s.`, id, world))
|
s.SendMessage(m.ChannelID, m.Author.Mention()+fmt.Sprintf(` Plemię o ID: %d nie istnieje na świecie %s.`, id, world))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
server := &models.Server{
|
dcServer := &models.Server{
|
||||||
ID: m.GuildID,
|
ID: m.GuildID,
|
||||||
}
|
}
|
||||||
err = s.cfg.ServerRepository.Store(context.Background(), server)
|
err = s.cfg.ServerRepository.Store(context.Background(), dcServer)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
s.SendMessage(m.ChannelID, m.Author.Mention()+` Nie udało się dodać plemienia do obserwowanych.`)
|
s.SendMessage(m.ChannelID, m.Author.Mention()+` Nie udało się dodać plemienia do obserwowanych.`)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(server.Tribes) >= TribesPerServer {
|
if len(dcServer.Tribes) >= TribesPerServer {
|
||||||
s.SendMessage(m.ChannelID, m.Author.Mention()+fmt.Sprintf(` Osiągnięto limit plemion (%d/%d).`, TribesPerServer, TribesPerServer))
|
s.SendMessage(m.ChannelID, m.Author.Mention()+fmt.Sprintf(` Osiągnięto limit plemion (%d/%d).`, TribesPerServer, TribesPerServer))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -308,7 +318,7 @@ func (s *Session) handleAddCommand(m *discordgo.MessageCreate, args ...string) {
|
||||||
err = s.cfg.TribeRepository.Store(context.Background(), &models.Tribe{
|
err = s.cfg.TribeRepository.Store(context.Background(), &models.Tribe{
|
||||||
World: world,
|
World: world,
|
||||||
TribeID: id,
|
TribeID: id,
|
||||||
ServerID: server.ID,
|
ServerID: dcServer.ID,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
s.SendMessage(m.ChannelID, m.Author.Mention()+` Nie udało się dodać plemienia do obserwowanych.`)
|
s.SendMessage(m.ChannelID, m.Author.Mention()+` Nie udało się dodać plemienia do obserwowanych.`)
|
||||||
|
|
|
@ -95,6 +95,14 @@ func (s *Session) handleNewMessage(_ *discordgo.Session, m *discordgo.MessageCre
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Session) memberHasPermission(guildID string, userID string, permission int) (bool, error) {
|
func (s *Session) memberHasPermission(guildID string, userID string, permission int) (bool, error) {
|
||||||
|
member, err := s.dg.State.Member(guildID, userID)
|
||||||
|
if err != nil {
|
||||||
|
if member, err = s.dg.GuildMember(guildID, userID); err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// check if a user is guild owner
|
||||||
guild, err := s.dg.State.Guild(guildID)
|
guild, err := s.dg.State.Guild(guildID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if guild, err = s.dg.Guild(guildID); err != nil {
|
if guild, err = s.dg.Guild(guildID); err != nil {
|
||||||
|
@ -105,13 +113,6 @@ func (s *Session) memberHasPermission(guildID string, userID string, permission
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
member, err := s.dg.State.Member(guildID, userID)
|
|
||||||
if err != nil {
|
|
||||||
if member, err = s.dg.GuildMember(guildID, userID); err != nil {
|
|
||||||
return false, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Iterate through the role IDs stored in member.Roles
|
// Iterate through the role IDs stored in member.Roles
|
||||||
// to check permissions
|
// to check permissions
|
||||||
for _, roleID := range member.Roles {
|
for _, roleID := range member.Roles {
|
||||||
|
|
|
@ -4,7 +4,7 @@ import "github.com/bwmarrin/discordgo"
|
||||||
|
|
||||||
// Constants for message embed character limits
|
// Constants for message embed character limits
|
||||||
const (
|
const (
|
||||||
discordEmbedColor = 0x00ff00
|
EmbedColor = 0x00ff00
|
||||||
EmbedLimitTitle = 256
|
EmbedLimitTitle = 256
|
||||||
EmbedLimitDescription = 2048
|
EmbedLimitDescription = 2048
|
||||||
EmbedLimitFieldValue = 1024
|
EmbedLimitFieldValue = 1024
|
||||||
|
@ -21,7 +21,7 @@ type Embed struct {
|
||||||
//NewEmbed returns a new embed object
|
//NewEmbed returns a new embed object
|
||||||
func NewEmbed() *Embed {
|
func NewEmbed() *Embed {
|
||||||
return &Embed{&discordgo.MessageEmbed{
|
return &Embed{&discordgo.MessageEmbed{
|
||||||
Color: discordEmbedColor,
|
Color: EmbedColor,
|
||||||
}}
|
}}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
4
go.mod
4
go.mod
|
@ -9,8 +9,8 @@ require (
|
||||||
github.com/joho/godotenv v1.3.0
|
github.com/joho/godotenv v1.3.0
|
||||||
github.com/pkg/errors v0.9.1
|
github.com/pkg/errors v0.9.1
|
||||||
github.com/robfig/cron/v3 v3.0.1
|
github.com/robfig/cron/v3 v3.0.1
|
||||||
github.com/tribalwarshelp/golang-sdk v0.0.0-20200604163817-64920bab73bb
|
github.com/tribalwarshelp/golang-sdk v0.0.0-20200607150457-971c5e02b4df
|
||||||
github.com/tribalwarshelp/shared v0.0.0-20200604161459-deeeccf99815
|
github.com/tribalwarshelp/shared v0.0.0-20200607152914-8ab83c6d1364
|
||||||
golang.org/x/net v0.0.0-20200528225125-3c3fba18258b // indirect
|
golang.org/x/net v0.0.0-20200528225125-3c3fba18258b // indirect
|
||||||
google.golang.org/protobuf v1.24.0 // indirect
|
google.golang.org/protobuf v1.24.0 // indirect
|
||||||
)
|
)
|
||||||
|
|
6
go.sum
6
go.sum
|
@ -101,8 +101,14 @@ github.com/tmthrgd/go-hex v0.0.0-20190904060850-447a3041c3bc h1:9lRDQMhESg+zvGYm
|
||||||
github.com/tmthrgd/go-hex v0.0.0-20190904060850-447a3041c3bc/go.mod h1:bciPuU6GHm1iF1pBvUfxfsH0Wmnc2VbpgvbI9ZWuIRs=
|
github.com/tmthrgd/go-hex v0.0.0-20190904060850-447a3041c3bc/go.mod h1:bciPuU6GHm1iF1pBvUfxfsH0Wmnc2VbpgvbI9ZWuIRs=
|
||||||
github.com/tribalwarshelp/golang-sdk v0.0.0-20200604163817-64920bab73bb h1:3arC78RszJkHTskhfPg/X4TXzlxHJFpF8FvDdFaavL8=
|
github.com/tribalwarshelp/golang-sdk v0.0.0-20200604163817-64920bab73bb h1:3arC78RszJkHTskhfPg/X4TXzlxHJFpF8FvDdFaavL8=
|
||||||
github.com/tribalwarshelp/golang-sdk v0.0.0-20200604163817-64920bab73bb/go.mod h1:8ALIvjiYLt0RVXz8TwDTJ3X5KAHv3M7+iYF/SvcA+1A=
|
github.com/tribalwarshelp/golang-sdk v0.0.0-20200604163817-64920bab73bb/go.mod h1:8ALIvjiYLt0RVXz8TwDTJ3X5KAHv3M7+iYF/SvcA+1A=
|
||||||
|
github.com/tribalwarshelp/golang-sdk v0.0.0-20200607150457-971c5e02b4df h1:nki0kQ7MyZnChZ7QDKyCc441rPEHBIZC8D3WWY0L+LM=
|
||||||
|
github.com/tribalwarshelp/golang-sdk v0.0.0-20200607150457-971c5e02b4df/go.mod h1:8ALIvjiYLt0RVXz8TwDTJ3X5KAHv3M7+iYF/SvcA+1A=
|
||||||
github.com/tribalwarshelp/shared v0.0.0-20200604161459-deeeccf99815 h1:c+BTJgJyif/HDt8bRxqNaK7zQReI59ho9yWdk7a/gNo=
|
github.com/tribalwarshelp/shared v0.0.0-20200604161459-deeeccf99815 h1:c+BTJgJyif/HDt8bRxqNaK7zQReI59ho9yWdk7a/gNo=
|
||||||
github.com/tribalwarshelp/shared v0.0.0-20200604161459-deeeccf99815/go.mod h1:tf+2yTHasV6jAF3V2deZ9slNoCyBzC0fMdTjI7clf6Y=
|
github.com/tribalwarshelp/shared v0.0.0-20200604161459-deeeccf99815/go.mod h1:tf+2yTHasV6jAF3V2deZ9slNoCyBzC0fMdTjI7clf6Y=
|
||||||
|
github.com/tribalwarshelp/shared v0.0.0-20200607152720-fcd5cd5455a3 h1:mMarqvZbHGPTg63QxB9BTgKgYfnBx6nePywslMJ1M4s=
|
||||||
|
github.com/tribalwarshelp/shared v0.0.0-20200607152720-fcd5cd5455a3/go.mod h1:tf+2yTHasV6jAF3V2deZ9slNoCyBzC0fMdTjI7clf6Y=
|
||||||
|
github.com/tribalwarshelp/shared v0.0.0-20200607152914-8ab83c6d1364 h1:Pi3n/0FkrHrBO0oW9Lp6kRAEc4qKe7p8lohrEv4GOXE=
|
||||||
|
github.com/tribalwarshelp/shared v0.0.0-20200607152914-8ab83c6d1364/go.mod h1:tf+2yTHasV6jAF3V2deZ9slNoCyBzC0fMdTjI7clf6Y=
|
||||||
github.com/vmihailenco/bufpool v0.1.5/go.mod h1:fL9i/PRTuS7AELqAHwSU1Zf1c70xhkhGe/cD5ud9pJk=
|
github.com/vmihailenco/bufpool v0.1.5/go.mod h1:fL9i/PRTuS7AELqAHwSU1Zf1c70xhkhGe/cD5ud9pJk=
|
||||||
github.com/vmihailenco/bufpool v0.1.11 h1:gOq2WmBrq0i2yW5QJ16ykccQ4wH9UyEsgLm6czKAd94=
|
github.com/vmihailenco/bufpool v0.1.11 h1:gOq2WmBrq0i2yW5QJ16ykccQ4wH9UyEsgLm6czKAd94=
|
||||||
github.com/vmihailenco/bufpool v0.1.11/go.mod h1:AFf/MOy3l2CFTKbxwt0mp2MwnqjNEs5H/UxrkA5jxTQ=
|
github.com/vmihailenco/bufpool v0.1.11/go.mod h1:AFf/MOy3l2CFTKbxwt0mp2MwnqjNEs5H/UxrkA5jxTQ=
|
||||||
|
|
Reference in New Issue