Skip to content

Instantly share code, notes, and snippets.

@shelomentsevd
Created December 24, 2017 09:23
Show Gist options
  • Save shelomentsevd/484c95fe82ce2dc98bc4b6d02f31c70b to your computer and use it in GitHub Desktop.
Save shelomentsevd/484c95fe82ce2dc98bc4b6d02f31c70b to your computer and use it in GitHub Desktop.
package main
import (
"log"
"fmt"
"os"
"github.com/shelomentsevd/mtproto"
"time"
)
func IsPhoneRegistered(mt *mtproto.MTProto, phonenumber string) (bool, error) {
checkedPhone, err := mt.AuthCheckPhone(phonenumber)
if err != nil {
return false, err
}
var registered bool
if registered, err = mtproto.ToBool(checkedPhone.Phone_registered); err != nil {
return false, err
}
return registered, nil
}
func Authorization(mt *mtproto.MTProto, phonenumber string) error {
sentCode, err := mt.AuthSendCode(phonenumber)
if err != nil {
return err
}
if !sentCode.Phone_registered {
return fmt.Errorf("Phone number isn't registered")
}
var code string
code = "33333"
_, err = mt.AuthSignIn(phonenumber, code, sentCode.Phone_code_hash)
if err != nil {
return err
}
return nil
}
func Registration(mt *mtproto.MTProto, phonenumber string) error {
sentCode, err := mt.AuthSendCode(phonenumber)
if err != nil {
return err
}
if sentCode.Phone_registered {
return fmt.Errorf("Phone number already registered")
}
var code, firstName, lastName string
code = "33333"
firstName = "test"
lastName = "test"
_, err = mt.AuthSignUp(
phonenumber,
sentCode.Phone_code_hash,
code,
firstName,
lastName,
)
if err != nil {
return err
}
return nil
}
func main() {
mtproto, err := mtproto.NewMTProto(41994,
"269069e15c81241f5670c397941016a2",
mtproto.WithServer("149.154.167.40:80", false),
mtproto.WithAuthFile(os.Getenv("HOME")+"/.telegramgo", true))
if err != nil {
log.Fatal(err)
}
if err := mtproto.Connect(); err != nil {
log.Fatal(err)
}
phonenumber := "+9996636666"
registered, err := IsPhoneRegistered(mtproto, phonenumber)
if err != nil {
log.Fatal("IsPhoneRegistered ", err)
}
if registered {
err := Authorization(mtproto, phonenumber)
if err != nil {
log.Fatal("Authorization " ,err)
}
} else {
err := Registration(mtproto, phonenumber)
if err != nil {
log.Fatal("Registration ", err)
}
}
log.Println("SUCCESS")
time.Sleep(time.Hour)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment