4
0
mirror of https://github.com/cwinfo/matterbridge.git synced 2025-07-04 13:37:44 +00:00

Allow regexs in ignoreNicks. Closes #690 (#720)

This commit is contained in:
Wim
2019-02-17 21:49:28 +01:00
committed by GitHub
parent aeaea0574f
commit 4525fa31aa
3 changed files with 45 additions and 45 deletions

View File

@ -237,38 +237,6 @@ func (gw *Gateway) ignoreTextEmpty(msg *config.Message) bool {
return true
}
// ignoreTexts returns true if msg.Text matches any of the input regexes.
func (gw *Gateway) ignoreTexts(msg *config.Message, input []string) bool {
for _, entry := range input {
if entry == "" {
continue
}
// TODO do not compile regexps everytime
re, err := regexp.Compile(entry)
if err != nil {
flog.Errorf("incorrect regexp %s for %s", entry, msg.Account)
continue
}
if re.MatchString(msg.Text) {
flog.Debugf("matching %s. ignoring %s from %s", entry, msg.Text, msg.Account)
return true
}
}
return false
}
// ignoreNicks returns true if msg.Username matches any of the input regexes.
func (gw *Gateway) ignoreNicks(msg *config.Message, input []string) bool {
// is the username in IgnoreNicks field
for _, entry := range input {
if msg.Username == entry {
flog.Debugf("ignoring %s from %s", msg.Username, msg.Account)
return true
}
}
return false
}
func (gw *Gateway) ignoreMessage(msg *config.Message) bool {
// if we don't have the bridge, ignore it
if _, ok := gw.Bridges[msg.Account]; !ok {
@ -277,7 +245,7 @@ func (gw *Gateway) ignoreMessage(msg *config.Message) bool {
igNicks := strings.Fields(gw.Bridges[msg.Account].GetString("IgnoreNicks"))
igMessages := strings.Fields(gw.Bridges[msg.Account].GetString("IgnoreMessages"))
if gw.ignoreTextEmpty(msg) || gw.ignoreNicks(msg, igNicks) || gw.ignoreTexts(msg, igMessages) {
if gw.ignoreTextEmpty(msg) || gw.ignoreText(msg.Username, igNicks) || gw.ignoreText(msg.Text, igMessages) {
return true
}
@ -435,3 +403,23 @@ func getChannelID(msg config.Message) string {
func isAPI(account string) bool {
return strings.HasPrefix(account, "api.")
}
// ignoreText returns true if text matches any of the input regexes.
func (gw *Gateway) ignoreText(text string, input []string) bool {
for _, entry := range input {
if entry == "" {
continue
}
// TODO do not compile regexps everytime
re, err := regexp.Compile(entry)
if err != nil {
flog.Errorf("incorrect regexp %s", entry)
continue
}
if re.MatchString(text) {
flog.Debugf("matching %s. ignoring %s", entry, text)
return true
}
}
return false
}