Add per-chat nick setting, update README.md

This commit is contained in:
eleksir
2023-11-05 16:33:17 +03:00
parent d88f08479d
commit 31490b0922
7 changed files with 47 additions and 20 deletions

View File

@@ -33,11 +33,14 @@ func parseEvent(e interface{}) { //nolint:maintidx,gocognit,gocyclo
// Групповой чятик
case "groupchat":
log.Debugf("Message from public chat: %s", v.Text)
// room := strings.SplitN(v.Remote, "/", 2)[0]
nick := strings.SplitN(v.Remote, "/", 2)[1]
var (
room = strings.SplitN(v.Remote, "/", 2)[0]
nick = strings.SplitN(v.Remote, "/", 2)[1]
)
if nick == config.Jabber.Nick {
log.Debugf("Message from public chat: %s", v.Text)
if nick == getBotNickFromRoomConfig(room) {
log.Debug("Skipping message from myself")
return
@@ -361,7 +364,7 @@ func parseEvent(e interface{}) { //nolint:maintidx,gocognit,gocyclo
mucNickMatch := false
for _, room := range roomsConnected {
mucNick := fmt.Sprintf("%s/%s", room, config.Jabber.Nick)
mucNick := fmt.Sprintf("%s/%s", room, getBotNickFromRoomConfig(room))
if v.From == mucNick {
mucNickMatch = true
@@ -384,7 +387,7 @@ func parseEvent(e interface{}) { //nolint:maintidx,gocognit,gocyclo
mucNickMatch := false
for _, room := range roomsConnected {
mucNick := fmt.Sprintf("%s/%s", room, config.Jabber.Nick)
mucNick := fmt.Sprintf("%s/%s", room, getBotNickFromRoomConfig(room))
if v.From == mucNick {
mucNickMatch = true
@@ -484,8 +487,11 @@ func parseEvent(e interface{}) { //nolint:maintidx,gocognit,gocyclo
if err := xml.Unmarshal(v.Query, &iqErrorCancelNotAcceptable); err == nil {
if v.To == talk.JID() {
nick := strings.SplitN(v.From, "/", 2)[1]
room := strings.SplitN(v.From, "/", 2)[0]
if slices.Contains(roomsConnected, iqErrorCancelNotAcceptable.By) &&
nick == getBotNickFromRoomConfig(room) {
if slices.Contains(roomsConnected, iqErrorCancelNotAcceptable.By) && nick == config.Jabber.Nick {
log.Errorf(
"Got Iq error message from: %s to: %s. Looks like i'm not in MUC anymore",
v.From, v.To,
@@ -577,7 +583,7 @@ func parseEvent(e interface{}) { //nolint:maintidx,gocognit,gocyclo
// Это наш собственный Presence
if v.Show == "" && v.Status == "" {
if nick == config.Jabber.Nick {
if nick == getBotNickFromRoomConfig(room) {
roomsConnected = append(roomsConnected, room)
// На всякий случай дедуплицируем список комнат, к которым мы заджойнились.
sort.Strings(roomsConnected)