Update mautrix-go
This commit is contained in:
34
main.go
34
main.go
@ -1,5 +1,5 @@
|
||||
// mautrix-whatsapp - A Matrix-WhatsApp puppeting bridge.
|
||||
// Copyright (C) 2019 Tulir Asokan
|
||||
// Copyright (C) 2020 Tulir Asokan
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License as published by
|
||||
@ -18,7 +18,6 @@ package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"os"
|
||||
"os/signal"
|
||||
"sync"
|
||||
@ -30,6 +29,7 @@ import (
|
||||
|
||||
"maunium.net/go/mautrix"
|
||||
"maunium.net/go/mautrix-appservice"
|
||||
"maunium.net/go/mautrix/id"
|
||||
|
||||
"maunium.net/go/mautrix-whatsapp/config"
|
||||
"maunium.net/go/mautrix-whatsapp/database"
|
||||
@ -107,28 +107,28 @@ type Bridge struct {
|
||||
Formatter *Formatter
|
||||
Relaybot *User
|
||||
|
||||
usersByMXID map[types.MatrixUserID]*User
|
||||
usersByMXID map[id.UserID]*User
|
||||
usersByJID map[types.WhatsAppID]*User
|
||||
usersLock sync.Mutex
|
||||
managementRooms map[types.MatrixRoomID]*User
|
||||
managementRooms map[id.RoomID]*User
|
||||
managementRoomsLock sync.Mutex
|
||||
portalsByMXID map[types.MatrixRoomID]*Portal
|
||||
portalsByMXID map[id.RoomID]*Portal
|
||||
portalsByJID map[database.PortalKey]*Portal
|
||||
portalsLock sync.Mutex
|
||||
puppets map[types.WhatsAppID]*Puppet
|
||||
puppetsByCustomMXID map[types.MatrixUserID]*Puppet
|
||||
puppetsByCustomMXID map[id.UserID]*Puppet
|
||||
puppetsLock sync.Mutex
|
||||
}
|
||||
|
||||
func NewBridge() *Bridge {
|
||||
bridge := &Bridge{
|
||||
usersByMXID: make(map[types.MatrixUserID]*User),
|
||||
usersByMXID: make(map[id.UserID]*User),
|
||||
usersByJID: make(map[types.WhatsAppID]*User),
|
||||
managementRooms: make(map[types.MatrixRoomID]*User),
|
||||
portalsByMXID: make(map[types.MatrixRoomID]*Portal),
|
||||
managementRooms: make(map[id.RoomID]*User),
|
||||
portalsByMXID: make(map[id.RoomID]*Portal),
|
||||
portalsByJID: make(map[database.PortalKey]*Portal),
|
||||
puppets: make(map[types.WhatsAppID]*Puppet),
|
||||
puppetsByCustomMXID: make(map[types.MatrixUserID]*Puppet),
|
||||
puppetsByCustomMXID: make(map[id.UserID]*Puppet),
|
||||
}
|
||||
|
||||
var err error
|
||||
@ -141,12 +141,8 @@ func NewBridge() *Bridge {
|
||||
}
|
||||
|
||||
func (bridge *Bridge) ensureConnection() {
|
||||
url := bridge.Bot.BuildURL("account", "whoami")
|
||||
resp := struct {
|
||||
UserID string `json:"user_id"`
|
||||
}{}
|
||||
for {
|
||||
_, err := bridge.Bot.MakeRequest(http.MethodGet, url, nil, &resp)
|
||||
resp, err := bridge.Bot.Whoami()
|
||||
if err != nil {
|
||||
if httpErr, ok := err.(mautrix.HTTPError); ok && httpErr.RespError != nil && httpErr.RespError.ErrCode == "M_UNKNOWN_ACCESS_TOKEN" {
|
||||
bridge.Log.Fatalln("Access token invalid. Is the registration installed in your homeserver correctly?")
|
||||
@ -262,10 +258,14 @@ func (bridge *Bridge) UpdateBotProfile() {
|
||||
botConfig := bridge.Config.AppService.Bot
|
||||
|
||||
var err error
|
||||
var mxc id.ContentURI
|
||||
if botConfig.Avatar == "remove" {
|
||||
err = bridge.Bot.SetAvatarURL("")
|
||||
err = bridge.Bot.SetAvatarURL(mxc)
|
||||
} else if len(botConfig.Avatar) > 0 {
|
||||
err = bridge.Bot.SetAvatarURL(botConfig.Avatar)
|
||||
mxc, err = id.ParseContentURI(botConfig.Avatar)
|
||||
if err == nil {
|
||||
err = bridge.Bot.SetAvatarURL(mxc)
|
||||
}
|
||||
}
|
||||
if err != nil {
|
||||
bridge.Log.Warnln("Failed to update bot avatar:", err)
|
||||
|
Reference in New Issue
Block a user