Optionally suppress URL embeds for Discord

This commit is contained in:
Kufat 2022-09-05 18:52:27 -04:00
parent fda05f2262
commit 9d80b73528
3 changed files with 27 additions and 0 deletions

View File

@ -36,6 +36,9 @@ type Bdiscord struct {
userMemberMap map[string]*discordgo.Member
nickMemberMap map[string]*discordgo.Member
noEmbedPartUrls bool
noEmbedUrls bool
// Webhook specific logic
useAutoWebhooks bool
transmitter *transmitter.Transmitter
@ -57,6 +60,12 @@ func New(cfg *bridge.Config) bridge.Bridger {
b.nickMemberMap = make(map[string]*discordgo.Member)
b.channelInfoMap = make(map[string]*config.ChannelInfo)
b.noEmbedPartUrls = b.GetBool("NoEmbedPartUrls")
b.noEmbedUrls = b.GetBool("NoEmbedUrls")
if b.noEmbedPartUrls && b.noEmbedUrls {
b.Log.Info("NoEmbedUrls supersedes NoEmbedPartUrls when both are specified.")
}
b.useAutoWebhooks = b.GetBool("AutoWebhooks")
if b.useAutoWebhooks {
b.Log.Debug("Using automatic webhooks")
@ -269,6 +278,10 @@ func (b *Bdiscord) Send(msg config.Message) (string, error) {
msg.Text = "_" + msg.Text + "_"
}
if b.noEmbedUrls || (msg.Event == config.EventJoinLeave && b.noEmbedPartUrls) {
disableEmbedUrls(&msg.Text)
}
// Handle prefix hint for unthreaded messages.
if msg.ParentNotFound() {
msg.ParentID = ""

View File

@ -233,6 +233,11 @@ func (b *Bdiscord) splitURL(url string) (string, string, bool) {
return webhookURLSplit[webhookIdxID], webhookURLSplit[webhookIdxToken], true
}
func disableEmbedUrls(msg *string) {
regex := regexp.MustCompile(`(\w+://\S+)`)
*msg = regex.ReplaceAllString(*msg, "<$1>")
}
func enumerateUsernames(s string) []string {
onlySpace := true
for _, r := range s {

View File

@ -939,6 +939,15 @@ IgnoreNicks=""
# IgnoreMessages="^~~ badword"
IgnoreMessages=""
# Prevent URL embeds by encasing URLs in <> angle brackets.
# Useful if trolls are a problem on the other end of your bridge.
NoEmbedUrls=false
# Prevent URL embeds in part/quit messages by encasing URLs in <> angle brackets.
# Useful if trolls spam in their quit messages or you're tired of seeing embeds for
# IRC client homepages.
NoEmbedPartUrls=false
# ReplaceMessages replaces substrings of messages in outgoing messages.
# Regular expressions are supported.
#