diff --git a/buny.go b/buny.go
index 0195d9b..b286d93 100644
--- a/buny.go
+++ b/buny.go
@@ -4,6 +4,7 @@ import (
"fmt"
"regexp"
"strings"
+ "time"
"github.com/davecgh/go-spew/spew"
"github.com/eleksir/go-xmpp"
@@ -82,7 +83,8 @@ func buny(v xmpp.Presence) error { //nolint:gocognit
Type: v.Type,
},
); err != nil {
- gTomb.Killf("unable to send phrase to room %s: %w", room, err)
+ err := fmt.Errorf("unable to send phrase to room %s: %w", room, err)
+ gTomb.Kill(err)
// Здесь возвращаем nil, т.к. за нас ошибку залоггирует код выше
return nil
@@ -91,7 +93,22 @@ func buny(v xmpp.Presence) error { //nolint:gocognit
// https://xmpp.org/extensions/xep-0045.html#ban баним вот таким сообщением
ban := "- "
- ban += ""
+
+ if bEntry.ReasonEnable {
+ var t = time.Now()
+ ban += fmt.Sprintf(
+ "autoban at %04d.%02d.%02d %02d:%02d:%02d",
+ t.Year(),
+ t.Month(),
+ t.Day(),
+ t.Hour(),
+ t.Minute(),
+ t.Second(),
+ )
+ } else {
+ ban += ""
+ }
+
ban += "
"
if id, err := talk.RawInformationQuery(
@@ -144,7 +161,8 @@ func buny(v xmpp.Presence) error { //nolint:gocognit
Type: v.Type,
},
); err != nil {
- gTomb.Killf("unable to send phrase to room %s: %w", room, err)
+ err := fmt.Errorf("unable to send phrase to room %s: %w", room, err)
+ gTomb.Kill(err)
// Здесь возвращаем nil, т.к. за нас ошибку залоггирует код выше
return nil
@@ -153,7 +171,22 @@ func buny(v xmpp.Presence) error { //nolint:gocognit
// https://xmpp.org/extensions/xep-0045.html#ban баним вот таким сообщением
ban := "- "
- ban += ""
+
+ if bEntry.ReasonEnable {
+ var t = time.Now()
+ ban += fmt.Sprintf(
+ "autoban at %04d.%02d.%02d %02d:%02d:%02d",
+ t.Year(),
+ t.Month(),
+ t.Day(),
+ t.Hour(),
+ t.Minute(),
+ t.Second(),
+ )
+ } else {
+ ban += ""
+ }
+
ban += "
"
if id, err := talk.RawInformationQuery(
diff --git a/data/sample_blacklist.json b/data/sample_blacklist.json
index fcd8a8a..6b1e145 100644
--- a/data/sample_blacklist.json
+++ b/data/sample_blacklist.json
@@ -3,6 +3,8 @@
{
# Пустой список означает глобальные баны, которые применяются ко всем комнатам, где присутствует бот
"room_name": "",
+ # Записывать ли в reason в банлисте комнаты сообщение вида autoban at yyyy.MM.dd hh:mm:ss
+ "reason_enable": false,
# Список регулярок JID-ов, которых надо банить
"jid_re": [
"^[Mm]ary@server.tld/resource1$",
diff --git a/types.go b/types.go
index 679a11b..453ebbb 100644
--- a/types.go
+++ b/types.go
@@ -50,8 +50,9 @@ type myWhiteList struct {
// myBlackList прототип структурки с чёрным списком jid-ов.
type myBlackList struct {
Blacklist []struct {
- RoomName string `json:"room_name,omitempty"`
- JidRe []string `json:"jid_re,omitempty"`
+ RoomName string `json:"room_name,omitempty"`
+ ReasonEnable bool `json:"reason_enable,omitempty"`
+ JidRe []string `json:"jid_re,omitempty"`
} `json:"blacklist,omitempty"`
}