package main import ( "flag" "fmt" "log" "time" "gopkg.in/gcfg.v1" "github.com/Arman92/go-tdlib" ) type MsgDirection string const ( Incoming MsgDirection = `incoming` Outgoing MsgDirection = `outgoing` ) type ChatWarsMessage struct { MsgID64 int64 `json:"msg_id"` UserID64 int64 `json:"user_id"` Direction MsgDirection `json:"direction"` MsgText string `json:"msg"` MsgDate int32 `json:"date"` } const user_chtwrsbot = 408101137 type Config struct { Rabbit struct { User string Password string Host string Queue string } } var ( config = flag.String("config", "gocw2.cfg", "config file path") history = flag.Bool("history", false, "initialize chat history") cfg Config ownUserID64 = int64(0) ownUserID32 = int32(0) ) func main() { // Parsing config flag.Parse() err := gcfg.ReadFileInto(&cfg, *config) if err != nil { log.Fatalf("Failed to parse gcfg data: %s", err) } tdlib.SetLogVerbosityLevel(1) tdlib.SetFilePath("./errors.txt") // Create new instance of client client := tdlib.NewClient(tdlib.Config{ APIID: "187786", APIHash: "e782045df67ba48e441ccb105da8fc85", SystemLanguageCode: "en", DeviceModel: "ChatWarsClient", SystemVersion: "0.1", ApplicationVersion: "0.1", UseMessageDatabase: true, UseFileDatabase: true, UseChatInfoDatabase: true, UseTestDataCenter: false, DatabaseDirectory: "./tdlib-db", FileDirectory: "./tdlib-files", IgnoreFileNames: false, }) for { currentState, _ := client.Authorize() if currentState.GetAuthorizationStateEnum() == tdlib.AuthorizationStateWaitPhoneNumberType { fmt.Print("Enter phone: ") var number string fmt.Scanln(&number) _, err := client.SendPhoneNumber(number) if err != nil { fmt.Printf("Error sending phone number: %v", err) } } else if currentState.GetAuthorizationStateEnum() == tdlib.AuthorizationStateWaitCodeType { fmt.Print("Enter code: ") var code string fmt.Scanln(&code) _, err := client.SendAuthCode(code) if err != nil { fmt.Printf("Error sending auth code : %v", err) } } else if currentState.GetAuthorizationStateEnum() == tdlib.AuthorizationStateWaitPasswordType { fmt.Print("Enter Password: ") var password string fmt.Scanln(&password) _, err := client.SendAuthPassword(password) if err != nil { fmt.Printf("Error sending auth password: %v", err) } } else if currentState.GetAuthorizationStateEnum() == tdlib.AuthorizationStateReadyType { fmt.Println("Authorization Ready! Let's rock") break } } log.Println("Poof ..") ownUserID32 = OwnUserID(client) ownUserID64 = int64(OwnUserID(client)) log.Println("Plop ..") if *history { log.Println("Getting history ..") getHistory(client) } go ListenCW(client) fmt.Println("Started !") // Main loop for { time.Sleep(30 * time.Second) } }