From 1c94f8dcedd67527177f0b185c8d1f3cdaeecded Mon Sep 17 00:00:00 2001 From: klmp200 Date: Mon, 23 Jul 2018 16:59:39 +0200 Subject: [PATCH] Say Hello Alfred :) --- .gitignore | 1 + README.md | 4 +++- alfred.go | 36 ++++++++++++++++++++++++++++++++ settings.json | 3 +++ settings/settings.go | 44 +++++++++++++++++++++++++++++++++++++++ settings/settings_test.go | 8 +++++++ 6 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 alfred.go create mode 100644 settings.json create mode 100644 settings/settings.go create mode 100644 settings/settings_test.go diff --git a/.gitignore b/.gitignore index 7560965..b23330f 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ # Project-local glide cache, RE: https://github.com/Masterminds/glide/issues/736 .glide/ +settings_custom.json \ No newline at end of file diff --git a/README.md b/README.md index 623ceb1..ce4631b 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ # ALFRED -ALFRED : Adorable Loyal Friend Reading Erratic Direct messages ALFRED is a Telegram Bot \ No newline at end of file +ALFRED : Adorable Loyal Friend Reading Erratic Direct messages ALFRED is a Telegram Bot + +Custom settings mount point inside docker is `/settings_custom.json`. \ No newline at end of file diff --git a/alfred.go b/alfred.go new file mode 100644 index 0000000..a332a29 --- /dev/null +++ b/alfred.go @@ -0,0 +1,36 @@ +/* +* @Author: Bartuccio Antoine +* @Date: 2018-07-23 15:24:22 +* @Last Modified by: klmp200 +* @Last Modified time: 2018-07-23 16:05:01 + */ + +package main + +import ( + "./settings" + tb "gopkg.in/tucnak/telebot.v2" + "log" + "time" +) + +func main() { + settings.LoadSettings("settings.json", "settings_custom.json") + + log.Println("Bot initialisation") + b, err := tb.NewBot(tb.Settings{ + Token: settings.Settings["token"].(string), + Poller: &tb.LongPoller{Timeout: 10 * time.Second}, + }) + if err != nil { + log.Fatal(err) + return + } + + b.Handle("/hello", func(m *tb.Message) { + b.Send(m.Sender, "Bonjour monsieur") + }) + + log.Println("Starting bot") + b.Start() +} diff --git a/settings.json b/settings.json new file mode 100644 index 0000000..d691ca0 --- /dev/null +++ b/settings.json @@ -0,0 +1,3 @@ +{ + "token": "INSERT TOKEN HERE" +} \ No newline at end of file diff --git a/settings/settings.go b/settings/settings.go new file mode 100644 index 0000000..a55f5a9 --- /dev/null +++ b/settings/settings.go @@ -0,0 +1,44 @@ +/* +* @Author: Bartuccio Antoine +* @Date: 2018-07-23 15:24:30 +* @Last Modified by: klmp200 +* @Last Modified time: 2018-07-23 16:02:42 + */ + +package settings + +import ( + "encoding/json" + "io/ioutil" + "log" +) + +var Settings map[string]interface{} + +// Load settings from given file path +// Return error in case of bad import +func loadJson(path string) error { + file, err := ioutil.ReadFile(path) + if err != nil { + return err + } + err = json.Unmarshal(file, &Settings) + return err +} + +// Load settings from given files paths +// Default settings are mandatory and program crash if there is an error at importation +// Custom settings are skipped if malformed or not found +func LoadSettings(settings_default_path, settings_custom_path string) { + log.Println("Loading settings") + Settings = make(map[string]interface{}) + if err := loadJson(settings_default_path); err != nil { + log.Println("error importing default settings") + log.Fatal(err) + } + if err := loadJson(settings_custom_path); err != nil { + log.Println("error importing custom settings, skipping") + log.Println(err) + } + log.Println("Settings loaded") +} diff --git a/settings/settings_test.go b/settings/settings_test.go new file mode 100644 index 0000000..fdd20bd --- /dev/null +++ b/settings/settings_test.go @@ -0,0 +1,8 @@ +/* +* @Author: Bartuccio Antoine +* @Date: 2018-07-23 16:08:28 +* @Last Modified by: klmp200 +* @Last Modified time: 2018-07-23 16:08:37 + */ + +package settings