diff --git a/.gitignore b/.gitignore index eb5b34a..ee19125 100644 --- a/.gitignore +++ b/.gitignore @@ -16,5 +16,4 @@ settings_custom.json history.json -users.json -chat_data.json \ No newline at end of file +users.json \ No newline at end of file diff --git a/alfred.go b/alfred.go index b8d4956..1bd01ff 100644 --- a/alfred.go +++ b/alfred.go @@ -2,7 +2,7 @@ * @Author: Bartuccio Antoine * @Date: 2018-07-23 15:24:22 * @Last Modified by: klmp200 -* @Last Modified time: 2018-07-27 16:13:32 +* @Last Modified time: 2018-07-25 19:27:21 */ package main @@ -27,8 +27,6 @@ func main() { "/gender": commands.Gender, "/roll": commands.Dice, "/trump": commands.LastTrumpTweet, - "/trends": commands.TwitterTrends, - "/chaos": commands.TwitterSJW, } if err := settings.LoadSettings("settings.json", "settings_custom.json"); err != nil { @@ -40,8 +38,6 @@ func main() { settings.Settings["history file"].(string)) log.Println("Initialize users infos") shared.InitUsers(settings.Settings["users file"].(string)) - log.Println("Initialize chat data") - shared.InitChatData(settings.Settings["chat data file"].(string)) log.Println("Bot initialisation") b, err := tb.NewBot(tb.Settings{ diff --git a/commands/gender.go b/commands/gender.go index 26d1d80..b126dbf 100644 --- a/commands/gender.go +++ b/commands/gender.go @@ -2,7 +2,7 @@ * @Author: Bartuccio Antoine * @Date: 2018-07-24 14:55:33 * @Last Modified by: klmp200 -* @Last Modified time: 2018-07-25 01:29:53 +* @Last Modified time: 2018-07-24 20:29:36 */ package commands @@ -24,10 +24,6 @@ func SetGender(m *tb.Message) { return } data := strings.Join(split, " ") - if data == "" { - shared.Bot.Send(m.Chat, "Attention, votre genre est vide. Ce n'est pas enregistrable.") - return - } shared.Users.Set(m.Sender.Username, "gender", data) shared.Bot.Send(m.Chat, "Votre genre est enregistré, je vous considère maintenant comme « "+data+" ».") } @@ -56,12 +52,13 @@ func Gender(m *tb.Message) { func cleanGender(slice []string) []string { for i := range slice { - slice[i] = strings.Replace(slice[i], "\\", "", -1) - slice[i] = strings.Replace(slice[i], "@", "", -1) clean := false for !clean { clean = true - if strings.HasPrefix(slice[i], "/") { + if strings.HasPrefix(slice[i], "@") { + slice[i] = strings.Replace(slice[i], "@", "", 1) + clean = false + } else if strings.HasPrefix(slice[i], "/") { slice[i] = strings.Replace(slice[i], "/", "", 1) clean = false } diff --git a/commands/twitter.go b/commands/twitter.go index 42e9ad8..0a2353a 100644 --- a/commands/twitter.go +++ b/commands/twitter.go @@ -2,7 +2,7 @@ * @Author: Bartuccio Antoine * @Date: 2018-07-25 18:51:38 * @Last Modified by: klmp200 -* @Last Modified time: 2018-07-27 16:49:59 +* @Last Modified time: 2018-07-25 22:51:50 */ package commands @@ -15,7 +15,6 @@ import ( tb "gopkg.in/tucnak/telebot.v2" "strconv" "strings" - "time" ) var client *twitter.Client @@ -40,20 +39,16 @@ func testOrInitTwitter() { } } -func twitterCommunicationError(m *tb.Message) { - shared.Bot.Send(m.Chat, "Désolé, les serveurs de twitter sont injoignables.") -} - func LastTrumpTweet(m *tb.Message) { testOrInitTwitter() user, _, err := client.Users.Show(&twitter.UserShowParams{ScreenName: "realDonaldTrump"}) if err != nil { - twitterCommunicationError(m) + shared.Bot.Send(m.Chat, "Désolé, les serveurs de twitter sont injoignables.") return } timeline, _, err := client.Timelines.UserTimeline(&twitter.UserTimelineParams{ScreenName: "realDonaldTrump"}) if err != nil { - twitterCommunicationError(m) + shared.Bot.Send(m.Chat, "Désolé, les serveurs de twitter sont injoignables.") return } response := []string{ @@ -69,46 +64,3 @@ func LastTrumpTweet(m *tb.Message) { } shared.Bot.Send(m.Chat, strings.Join(response, " ")) } - -func TwitterTrends(m *tb.Message) { - testOrInitTwitter() - trends, _, err := client.Trends.Place(int64(615702), nil) - if err != nil { - twitterCommunicationError(m) - return - } - message := "Voici les dernières tendances en France" - for _, trend := range trends[0].Trends { - message += "\n" + trend.Name - } - shared.Bot.Send(m.Chat, message) -} - -func TwitterSJW(m *tb.Message) { - testOrInitTwitter() - last_use, exists := shared.ChatData.Get(m.Chat.ID, "last chaos use") - if exists { - var date time.Time - if _, is_string := last_use.(string); is_string { - date, _ = time.Parse(time.RFC3339, last_use.(string)) - } else { - date = last_use.(time.Time) - } - if time.Now().Before(date.Add(time.Hour * 24)) { - shared.Bot.Send(m.Chat, "Arioch ne répondra pas à votre appel.") - return - } - } - shared.ChatData.Set(m.Chat.ID, "last chaos use", time.Now()) - - tweets, _, err := client.Search.Tweets(&twitter.SearchTweetParams{ - Query: "#SJW", - }) - if err != nil { - twitterCommunicationError(m) - return - } - for _, tweet := range tweets.Statuses { - shared.Bot.Send(m.Chat, tweet.Text) - } -} diff --git a/settings.json b/settings.json index de9860a..df3e4a7 100644 --- a/settings.json +++ b/settings.json @@ -6,6 +6,5 @@ "twitter consumer secret": "INSERT TOKEN HERE", "history size": 10, "history file": "history.json", - "users file": "users.json", - "chat data file": "chat_data.json" + "users file": "users.json" } \ No newline at end of file diff --git a/shared/chat.go b/shared/chat.go deleted file mode 100644 index 6158a28..0000000 --- a/shared/chat.go +++ /dev/null @@ -1,82 +0,0 @@ -/* -* @Author: Bartuccio Antoine -* @Date: 2018-07-27 15:37:59 -* @Last Modified by: klmp200 -* @Last Modified time: 2018-07-27 16:06:51 - */ - -package shared - -import ( - "encoding/json" - "io/ioutil" - "sync" -) - -// General purpose chat info storage -type chatData struct { - mutex sync.Mutex - data map[int64]map[string]interface{} -} - -type chatDataFile struct { - mutex sync.Mutex - path string -} - -var ChatData chatData -var cdf chatDataFile - -// Init chat data meant to store infos about a chat. -func InitChatData(path string) { - cdf = chatDataFile{path: path} - ChatData = chatData{data: make(map[int64]map[string]interface{})} - ChatData.mutex.Lock() - defer ChatData.mutex.Unlock() - cdf.read() - -} - -func (c chatData) Set(chat int64, key string, data interface{}) { - c.mutex.Lock() - defer c.mutex.Unlock() - if _, exists := c.data[chat]; !exists { - c.data[chat] = make(map[string]interface{}) - } - c.data[chat][key] = data - go cdf.write() -} - -func (c chatData) Get(chat int64, key string) (interface{}, bool) { - c.mutex.Lock() - defer c.mutex.Unlock() - m, exists := c.data[chat] - if !exists { - return nil, false - } - data, ok := m[key] - if !ok { - return nil, false - } - return data, true -} - -func (c chatDataFile) read() { - c.mutex.Lock() - defer c.mutex.Unlock() - data, err := ioutil.ReadFile(c.path) - if err != nil { - // File doesn't exist, skip import - return - } - json.Unmarshal(data, &ChatData.data) -} - -func (c chatDataFile) write() { - c.mutex.Lock() - defer c.mutex.Unlock() - ChatData.mutex.Lock() - defer ChatData.mutex.Unlock() - data, _ := json.Marshal(ChatData.data) - ioutil.WriteFile(c.path, data, 0770) -}