| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- package util
- import (
- "encoding/json"
- "github.com/ayntgl/discordgo"
- )
- func FindMessageByID(ms []*discordgo.Message, mID string) (int, *discordgo.Message) {
- for i, m := range ms {
- if m.ID == mID {
- return i, m
- }
- }
- return -1, nil
- }
- func HasPermission(s *discordgo.State, cID string, p int64) bool {
- perm, err := s.UserChannelPermissions(s.User.ID, cID)
- if err != nil {
- return false
- }
- return perm&p == p
- }
- type loginResponse struct {
- Ticket string `json:"ticket"`
- Token string `json:"token"`
- MFA bool `json:"mfa"`
- SMS bool `json:"sms"`
- }
- func Login(s *discordgo.Session, email string, password string) (*loginResponse, error) {
- data := struct {
- Email string `json:"email"`
- Password string `json:"password"`
- }{email, password}
- resp, err := s.RequestWithBucketID(
- "POST",
- discordgo.EndpointLogin,
- data,
- discordgo.EndpointLogin,
- )
- if err != nil {
- return nil, err
- }
- var lr loginResponse
- err = json.Unmarshal(resp, &lr)
- if err != nil {
- return nil, err
- }
- return &lr, nil
- }
- func TOTP(s *discordgo.Session, code string, ticket string) (*loginResponse, error) {
- data := struct {
- Code string `json:"code"`
- Ticket string `json:"ticket"`
- }{code, ticket}
- e := discordgo.EndpointAuth + "mfa/totp"
- resp, err := s.RequestWithBucketID("POST", e, data, e)
- if err != nil {
- return nil, err
- }
- var lr loginResponse
- err = json.Unmarshal(resp, &lr)
- if err != nil {
- return nil, err
- }
- return &lr, nil
- }
|