Update deps, update config of golangci-lint, fix some golangci-lint warnings

This commit is contained in:
eleksir
2025-05-27 20:54:22 +03:00
parent 21b5f59c1c
commit f9dd1acc45
78 changed files with 1602 additions and 2205 deletions

View File

@@ -20,7 +20,7 @@ const (
)
// Выдаёт "очки похожести" для данной фразы.
func checkPhrase(s string) error {
func checkPhrase(s string) error { //nolint: unused
classifier, err := bayesian.NewClassifierFromFile(dataFile)
if err != nil {
@@ -37,7 +37,7 @@ func checkPhrase(s string) error {
}
// Выучивает слова из предопределённых словарей.
func learn() error {
func learn() error { //nolint: unused
classifier := bayesian.NewClassifier(Bad, Good)
if err := feed(classifier, goodDictionaryFile, Good); err != nil {
@@ -56,7 +56,7 @@ func learn() error {
}
// Дополняет заданный класс фразами из указанного файла.
func feed(c *bayesian.Classifier, filename string, bc bayesian.Class) error {
func feed(c *bayesian.Classifier, filename string, bc bayesian.Class) error { //nolint:unused
fh, err := os.Open(filename)
if err != nil {
@@ -98,3 +98,5 @@ func feed(c *bayesian.Classifier, filename string, bc bayesian.Class) error {
return nil
}
/* vim: set ft=go noet ai ts=4 sw=4 sts=4: */

View File

@@ -202,3 +202,5 @@ func (j *Jabber) ReadBlacklist() error {
return err
}
/* vim: set ft=go noet ai ts=4 sw=4 sts=4: */

View File

@@ -208,3 +208,5 @@ func (j *Jabber) Cmd(v xmpp.Chat) error {
return err
}
/* vim: set ft=go noet ai ts=4 sw=4 sts=4: */

View File

@@ -108,7 +108,7 @@ func (j *Jabber) ParseEvent(e interface{}) { //nolint:maintidx,gocognit,gocyclo
}
var (
iqStruct JabberSimpleIqGetQuery
iqStruct SimpleIqGetQuery
parseError bool
)
@@ -244,7 +244,7 @@ func (j *Jabber) ParseEvent(e interface{}) { //nolint:maintidx,gocognit,gocyclo
// Попробуем распарсить входящий запрос как urn:xmpp:time
if parseError {
var iqStruct JabberTimeIqGetQuery
var iqStruct TimeIqGetQuery
if err := xml.Unmarshal(v.Query, &iqStruct); err == nil {
switch iqStruct.Xmlns {
@@ -278,7 +278,7 @@ func (j *Jabber) ParseEvent(e interface{}) { //nolint:maintidx,gocognit,gocyclo
// Попробуем распарсить входящий запрос как http://jabber.org/protocol/pubsub
if parseError {
var iqStruct JabberPubsubIQGetQuery
var iqStruct PubsubIQGetQuery
if err := xml.Unmarshal(v.Query, &iqStruct); err == nil {
switch iqStruct.Xmlns {
@@ -316,7 +316,7 @@ func (j *Jabber) ParseEvent(e interface{}) { //nolint:maintidx,gocognit,gocyclo
// Предполагается, что такие респонсы должны приходить только для пинга без серверной оптимизации.
// Хотя идейно мы не поддерживаем работу без серверной оптимизации, но на пинг ответим, нам несложно.
if parseError {
var iqStruct JabberIqPing
var iqStruct IqPing
if err := xml.Unmarshal(v.Query, &iqStruct); err == nil {
log.Debugf("Got IQ get request (actually, response) for MUC Self-Ping from %s", v.From)
@@ -377,8 +377,8 @@ func (j *Jabber) ParseEvent(e interface{}) { //nolint:maintidx,gocognit,gocyclo
if mucNickMatch {
log.Debugf("Got 2-nd stage MUC pong answer (xep-0410) from %s to %s", v.From, v.To)
// Поскольку никакой логики у нас на этот счёт не предусмотрено, то просто пропускаем ответ
} else {
// Поскольку никакой логики у нас на этот счёт не предусмотрено, то просто пропускаем ответ
log.Infof("Got unknown pong from %s to %s", v.From, v.To)
log.Debug(spew.Sdump(e))
}
@@ -405,11 +405,10 @@ func (j *Jabber) ParseEvent(e interface{}) { //nolint:maintidx,gocognit,gocyclo
// Формально, ответ должен парситься как пустой result и совпадать с типом jabberSimpleIqGetQuery
// Ответ приходит с 2 xmlns, похоже, он парсится неправильно в go-xmpp.
// TODO: после исправления go-xmpp, надо исправить это тут
var iqStruct JabberSimpleIqGetQuery
var iqStruct SimpleIqGetQuery
if err := xml.Unmarshal(v.Query, &iqStruct); err == nil {
if iqStruct.Xmlns == "http://jabber.org/protocol/muc#admin" && iqStruct.Text == "" {
if mucNickMatch {
// Поскольку никакой логики у нас на этот счёт не предусмотрено, то просто пропускаем ответ
log.Infof("Got ban successful from %s to %s", v.From, v.To)
@@ -464,7 +463,7 @@ func (j *Jabber) ParseEvent(e interface{}) { //nolint:maintidx,gocognit,gocyclo
// Если сервер не хочет пинговаться и отвечает ошибкой на пинг, то наверно он не умеет в пинги,
// хотя если мы его пингуем, значит он анонсировал такой capability. Вот, засранец!
var (
iqPingStruct JabberIqPing
iqPingStruct IqPing
parseError = true
)
@@ -489,7 +488,7 @@ func (j *Jabber) ParseEvent(e interface{}) { //nolint:maintidx,gocognit,gocyclo
// Это у нас пинг xep-0410 и мы не в комнате, предполагается, что надо бы заджойниться
if parseError {
var iqErrorCancelNotAcceptable JabberIqErrorCancelNotAcceptable
var iqErrorCancelNotAcceptable IqErrorCancelNotAcceptable
if err := xml.Unmarshal(v.Query, &iqErrorCancelNotAcceptable); err == nil {
if v.To == j.Talk.JID() {
@@ -498,7 +497,6 @@ func (j *Jabber) ParseEvent(e interface{}) { //nolint:maintidx,gocognit,gocyclo
if slices.Contains(j.RoomsConnected, iqErrorCancelNotAcceptable.By) &&
nick == j.GetBotNickFromRoomConfig(room) {
log.Errorf(
"Got Iq error message from: %s to: %s. Looks like i'm not in MUC anymore",
v.From, v.To,
@@ -571,7 +569,7 @@ func (j *Jabber) ParseEvent(e interface{}) { //nolint:maintidx,gocognit,gocyclo
} else {
log.Errorf("Presence notification, Type: %s, From: %s, Show: %s, Status: %s",
v.Type, v.From, v.Show, v.Status)
log.Errorf(spew.Sdump(v))
log.Error(spew.Sdump(v))
}
} else {
log.Infof(

View File

@@ -37,6 +37,7 @@ func (j *Jabber) MyLoop() error {
func() error {
err := j.ProbeServerLiveness()
log.Error(err)
return err
},
)

View File

@@ -44,7 +44,7 @@ func nString(buf string) string {
}
// Обёртка для nString, возвращает нормализованную строку в нижнем регистре.
func nStringLower(buf string) string {
func nStringLower(buf string) string { //nolint:unused
return strings.ToLower(nString(buf))
}

View File

@@ -58,3 +58,5 @@ func (j *Jabber) SigHandler() error {
return nil
}
/* vim: set ft=go noet ai ts=4 sw=4 sts=4: */

View File

@@ -76,3 +76,5 @@ func (j *Jabber) Squash(room, jid string, reasonEnable bool, vType string) (stri
return id, err
}
/* vim: set ft=go noet ai ts=4 sw=4 sts=4: */

View File

@@ -145,17 +145,17 @@ type Jabber struct {
Connecting bool
}
// JabberSimpleIqGetQuery прототип структурки для разбора запросов xmpp discovery query, например,
// SimpleIqGetQuery прототип структурки для разбора запросов xmpp discovery query, например,
// https://xmpp.org/extensions/xep-0030.html#example-18 .
type JabberSimpleIqGetQuery struct {
type SimpleIqGetQuery struct {
XMLName xml.Name `xml:"query"`
Text string `xml:",chardata"`
Xmlns string `xml:"xmlns,attr"`
Node string `xml:"node,attr,omitempty"` // для xmlns="http://jabber.org/protocol/disco#items"
}
// JabberPubsubIQGetQuery прототип структурки для разбора запросов xmpp pubsub.
type JabberPubsubIQGetQuery struct {
// PubsubIQGetQuery прототип структурки для разбора запросов xmpp pubsub.
type PubsubIQGetQuery struct {
XMLName xml.Name `xml:"pubsub"`
Text string `xml:",chardata"`
Xmlns string `xml:"xmlns,attr"`
@@ -166,25 +166,25 @@ type JabberPubsubIQGetQuery struct {
} `xml:"items"`
}
// JabberTimeIqGetQuery прототип структурки для разбора IQ запросов на локальное время клиента,
// TimeIqGetQuery прототип структурки для разбора IQ запросов на локальное время клиента,
// https://xmpp.org/extensions/xep-0202.html
type JabberTimeIqGetQuery struct {
type TimeIqGetQuery struct {
// <time xmlns="urn:xmpp:time"/>
XMLName xml.Name `xml:"time"`
Text string `xml:",chardata"`
Xmlns string `xml:"xmlns,attr"`
}
// JabberIqPing прототип структурки для разбора IQ запросов на пинг клиента, https://xmpp.org/extensions/xep-0199.html
type JabberIqPing struct {
// IqPing прототип структурки для разбора IQ запросов на пинг клиента, https://xmpp.org/extensions/xep-0199.html
type IqPing struct {
XMLName xml.Name `xml:"ping"`
Text string `xml:",chardata"`
Xmlns string `xml:"xmlns,attr"`
}
// JabberIqErrorCancelNotAcceptable прототип структурки для разбора IQ ответов, когда сервис (сервер, клиент, etc) не
// IqErrorCancelNotAcceptable прототип структурки для разбора IQ ответов, когда сервис (сервер, клиент, etc) не
// может или не хочет принимать наш iq-запрос https://xmpp.org/extensions/xep-0099.html
type JabberIqErrorCancelNotAcceptable struct {
type IqErrorCancelNotAcceptable struct {
XMLName xml.Name `xml:"error"`
Text string `xml:",chardata"`
Type string `xml:"type,attr"`

View File

@@ -107,7 +107,7 @@ func (j *Jabber) RotateStatus(room string) error {
}
if _, err := j.Talk.SendPresence(p); err != nil {
return fmt.Errorf("Unable to send presence to MUC %s: %s", room, err)
return fmt.Errorf("unable to send presence to MUC %s: %w", room, err)
}
// Если мы не хотим ротировать, то цикл нам тут не нужен, просто выходим.
@@ -125,7 +125,7 @@ func (j *Jabber) JoinMuc(room string) error {
log.Debugf("Sending disco#info from %s to %s", j.Talk.JID(), room)
if _, err := j.Talk.DiscoverInfo(j.Talk.JID(), room); err != nil {
return fmt.Errorf("Unable to send disco#info to MUC %s: %s", room, err)
return fmt.Errorf("unable to send disco#info to MUC %s: %w", room, err)
}
// Ждём, пока muc нам вернёт список фичей.
@@ -156,7 +156,7 @@ func (j *Jabber) JoinMuc(room string) error {
// Заходим в конфу, наконец-то
if _, err := j.Talk.JoinMUCNoHistory(room, j.GetBotNickFromRoomConfig(room)); err != nil {
return fmt.Errorf("Unable to join to MUC: %s, %w", room, err)
return fmt.Errorf("unable to join to MUC: %s, %w", room, err)
}
log.Infof("Joining to MUC: %s", room)
@@ -224,12 +224,12 @@ func (j *Jabber) EstablishConnection() error {
j.Talk, err = j.Options.NewClient()
if err != nil {
return fmt.Errorf("Unable to connect to %s: %w", j.Options.Host, err)
return fmt.Errorf("unable to connect to %s: %w", j.Options.Host, err)
}
// По идее keepalive должен же проходить только, если мы уже на сервере, так?
if _, err := j.Talk.SendKeepAlive(); err != nil {
return fmt.Errorf("Try to send initial KeepAlive, got error: %w", err)
return fmt.Errorf("try to send initial KeepAlive, got error: %w", err)
}
log.Info("Connected")
@@ -237,6 +237,7 @@ func (j *Jabber) EstablishConnection() error {
// Джойнимся к чятикам, но делаем это в фоне, чтобы не блочиться на ошибках, например, если бота забанили
for _, roomStruct := range j.C.Jabber.Channels {
room := roomStruct.Name
j.GTomb.Go(func() error { return j.JoinMuc(room) })
}
@@ -251,7 +252,7 @@ func (j *Jabber) EstablishConnection() error {
_, err = j.Talk.DiscoverInfo(j.Talk.JID(), j.C.Jabber.Server)
if err != nil {
return fmt.Errorf("Unable to send disco#info to jabber server: %s", err)
return fmt.Errorf("unable to send disco#info to jabber server: %w", err)
}
return nil
@@ -409,6 +410,7 @@ func (j *Jabber) ProbeMUCLiveness() { //nolint:gocognit
if e := j.Talk.PingS2S(j.Talk.JID(), room); e != nil {
err = fmt.Errorf("unable to ping MUC %s: %w", room, e)
return err
}