Commit Graph

787 Commits (9c203327c07d8fd4161c47163f35dfea29ac83b1)

Author SHA1 Message Date
James Lu 2a7f28606c
Declare GUILD_MEMBERS privileged intent (discord) (#1428)
Without this declared, it seems that Discord will not send any member update
events after connection, even if the privileged gateway intent is enabled for
the bot in settings. This causes nick tracking to get out of sync when people
change their nicks after the bot connects.

See: https://discord.com/developers/docs/topics/gateway#gateway-intents
4 years ago
Ben Wiederhake 0450482e6e
Make lottie_convert work on platforms without /dev/stdout (#1424)
Fixes #1423.
4 years ago
Wim be3dfb251d
Check rune length instead of bytes (telegram). Fixes #1409 (#1412) 4 years ago
Alexander 763bb95cea
Fix webhooks for channels with special characters (xmpp) (#1405) 4 years ago
Tadeo Kondrak c147ba1da1
Handle Rocket.Chat attachments (#1395) 4 years ago
Qais Patankar 10f044c3dd
Use valid transmitter Log default (discord) (#1402)
* Use valid transmitter Log default (discord)

Using a logger created by `log.NewEntry(nil)` would crash. (matterbridge does not encounter this issue as it updates the Log field manually.)
4 years ago
Alexander ce5140febd
Fix panic when the webhook fails (xmpp) (#1401) 4 years ago
Wim 1624f10773
Pick up all the webhooks (discord) (#1383) 4 years ago
Ivanik 8764be7461
Add vk bridge (#1372)
* Add vk bridge

* Vk bridge attachments

* Vk bridge forwarded messages

* Vk bridge sample config and code cleanup

* Vk bridge add vendor

* Vk bridge message edit

* Vk bridge: fix fetching names of other bots

* Vk bridge: code cleanup

* Vk bridge: fix shadows declaration

* Vk bridge: remove UseFileURL
4 years ago
Wim 5dd15ef8e7
Add an even more debug option (discord) (#1368)
Enable discordgo debugging with debuglevel=1 under the [discord.xxx] section, for even more debugging fun.
4 years ago
Alexander 4ac6366706
Allow the XMPP bridge to use slack compatible webhooks (xmpp) (#1364)
* Add mod_slack_webhook support to the XMPP bridge

* Replace b.webhookURL with b.GetString

* Do not return a message ID on webhook POST

* Add the XMPP webhook to the sample configuration
4 years ago
Paul b039da1eba
Add jpe as valid image filename extension (telegram) (#1360) 4 years ago
Qais Patankar 8fcd0f3b6f
Improve Markdown in transmitter docs (discord) (#1351) 4 years ago
Wim 16fde6935c
Rename .oga audio files to .ogg (telegram) (#1349) 4 years ago
Qais Patankar a9d8ac8bc0
Refactor "msg-parent-not-found" to config.ParentIDNotFound (#1347) 4 years ago
Qais Patankar 1a4717b366
Reject cross-channel message references (discord) (#1345)
Discord message references have been designed in a way for this to
support cross-channel or even cross-guild references in the future.

This will ensure the ParentID is *not* set when the message refers to a
message that was sent in a different channel.
4 years ago
Qais Patankar 6cadf12260
Add a prefix handler for unthreaded messages (discord) (#1346) 4 years ago
Wim 19d47784bd
Add threading support with token (discord) (#1342)
Webhooks don't support the threading yet, so this is token only.
In discord you can reply on each message of a thread, but this is not possible in mattermost (so some changes added there to make sure we always answer on the rootID of the thread).

Also needs some more testing with slack.

update : It now also uses the token when replying to a thread (even if webhooks are enabled), until webhooks have support for threads.
4 years ago
Qais Patankar b89102c5fc
Fix 'webook' typo in discord/webhook.go (#1344) 4 years ago
James Lu a9f89dbc64
Add support for stateless bridging via draft/relaymsg (irc) (#1339)
* irc: add support for stateless bridging via draft/relaymsg

As discussed at https://github.com/42wim/matterbridge/issues/667#issuecomment-634214165

* irc: handle the draft/relaymsg tag in spoofed messages too

* Apply suggestions from code review

Co-authored-by: Wim <wim@42.be>

* Run gofmt on irc.go

* Document relaymsg in matterbridge.toml.sample

Co-authored-by: Wim <wim@42.be>
4 years ago
Qais Patankar 6de4c7e971
Update webhook documentation (discord) (#1335) 4 years ago
Qais Patankar 03dc51ffa2 Split Bdiscord.Send into handleEventWebhook and handleEventBotUser (discord) 4 years ago
Qais Patankar aef2dcdfdd Move webhook specific logic to its own file (discord) 4 years ago
Qais Patankar 0494119bf4 Extract maybeGetLocalAvatar into its own function (discord) 4 years ago
Qais Patankar 0a17e21119 Remove WebhookURL support (discord) 4 years ago
Qais Patankar 52e2f926f4 Add initial transmitter implementation (discord)
This has been tested with one webhook in one channel.

Sends, edits and deletions work fine
4 years ago
Qais Patankar 611fb279bc Revert "Disable webhook editing (#1296)" (discord)
This reverts commit c23252ab53.
4 years ago
Gary Kim 41b4e64be9
Update go-nc-talk (nctalk) (#1333)
Signed-off-by: Gary Kim <gary@garykim.dev>
4 years ago
Wim 4913766d58
Parse fencedcode in ParseMarkdown. Fixes #1127 (#1329) 4 years ago
Wim 92da8c7044
Mark messages as read (matrix). Fixes #1317 (#1328) 4 years ago
Wim 2d3c26a4b2
Implement ratelimiting (matrix). Fixes #1238 (#1326) 4 years ago
Wim 8eba2d3e50
Make handlers run async (irc) (#1325)
This makes the handlers run in a seperate go-routine in girc, and makes
sure that girc isn't blocked on executing PONG requests when
matterbridge takes a long time handling the incoming message.

This can happen when another bridge is in a backoff state where the
backoff time exceeds the IRC ping timeout.
4 years ago
Qais Patankar c42167c6f4
Refactor guild finding code (discord) (#1319) 4 years ago
Sebastian P 44d182e2f9
Add nil checks to text message handling (mumble) (#1321) 4 years ago
Wim ad95e35687 Rename jfif to jpg (whatsapp). Fixes #1292 4 years ago
Wim 640a9995f4 Refactor handleTextMessage (whatsapp) 4 years ago
Wim 95625f6871 Refactor image downloads (whatsapp) 4 years ago
Wim 2c20f72a9c Handle audio downloads (whatsapp) 4 years ago
Wim 5ad788e768 Handle video downloads (whatsapp) 4 years ago
Wim ed98c586c6 Add support for deleting messages (whatsapp) 4 years ago
Wim 3e865708d6 Refactor/cleanup code (whatsapp) 4 years ago
Simon THOBY 29e29439ee
Show mxids in case of clashing usernames (matrix) (#1309)
Fixes #1302.
4 years ago
Wim 0c19716f44
Join on invite (irc). Fixes #1231 (#1306) 4 years ago
Wim b24e1bafa1
Add support for irc to irc notice (irc). Fixes #754 (#1305) 4 years ago
Wim 64b899ac89
Retry until we have contacts (whatsapp). Fixes #1122 (#1304) 4 years ago
Wim c23252ab53
Disable webhook editing (discord) (#1296)
See https://github.com/42wim/matterbridge/issues/1255 and
https://github.com/qaisjp/go-discord-irc/issues/57

Webhook edits gets ratelimited which cause other problems with
matterbridge. Disabling for now.
4 years ago
Simon THOBY 1a3c57a031
Send the display name instead of the user name (matrix) (#1282)
* matrix: send the display name (the nickname in matrix parlance) instead of the user name

There is also the option UseUserName (already in use by the discord bridge) to turn back to the old behavior.

* matrix: update displayNames on join events

* matrix: introduce a helper.go file to keep matrix.go size reasonable
4 years ago
Simon THOBY cbb46293ab
Update webhook messages via new endpoint (discord)
When using the webhook, the previous method to edit a message was to
delete the old one via the classical API, and to create a new message
via the webhook. While this works, this means that editing "old" messages
lead to a mess where the chronological order is no longer respected.

This uses an hidden API explained in https://support.discord.com/hc/en-us/community/posts/360034557771
to achieve a proper edition using the webhook API.

The obvious downside of this approach is that since it is an
undocumented API for now, so there is no stability guarantee :/
4 years ago
George 765e00c949
Add NoTLS option to allow plaintext XMPP connections (#1288)
Co-authored-by: George <zhoreeq@users.noreply.github.com>
4 years ago
Simon THOBY 662359908b
Allow message edits on matrix (#1286)
based on https://github.com/Half-Shot/matrix-doc/blob/hs/1695-message-edits-proposal/proposals/1695-message-edits.md
4 years ago
Wim 4f8b19c686
Add PingDelay option (irc) (#1269) 4 years ago
Dellle 3188a9ffe6
Add username formatting for all events (matrix) (#1233) 4 years ago
Wim 61569a8610
Add even more debug for irc (#1266) 4 years ago
Gary Kim 950f2759bd
Add support for downloading files (nctalk) (#1249)
Signed-off-by: Gary Kim <gary@garykim.dev>
4 years ago
Wim 25c82ddf02
Use vendored whatsapp version (#1258) 4 years ago
Gary Kim 219a5453f9
Append a suffix if user is a guest user (nctalk) (#1250)
Signed-off-by: Gary Kim <gary@garykim.dev>
4 years ago
Sebastian P 214a6a1386
Add Mumble support (#1245) 4 years ago
Dellle a42e488e58
Add username for images from WhatsApp (#1232) 4 years ago
Ben Wiederhake 06eb89b05b
Matrix: Permit uploading files of other mimetypes (#1237)
This includes at least c-source-files, cpp-source-files,
markdown-files, Rust-files, and plaintext files.
We already allow uploading arbitrary executables. (And javascript-files,
coincidentally.) Not permitting these other text files would be highly unexpected.
4 years ago
Wim cec63546ff
Check location of avatarURL (zulip). Fixes #1214 (#1227) 4 years ago
Tilo Spannagel 712385ffd5
Format rich object strings (nctalk) (#1222)
Signed-off-by: Tilo Spannagel <development@tilosp.de>
4 years ago
Tilo Spannagel f9928c9e25
Switch to upstream gomatrix (#1219)
Signed-off-by: Tilo Spannagel <development@tilosp.de>
4 years ago
Gary Kim a0741d99b8
Add TLSConfig to nctalk (#1195)
Signed-off-by: Gary Kim <gary@garykim.dev>
4 years ago
NikkyAI c63f08c811
Sent loopback messages to other websockets as well (api) (#1216) 4 years ago
escoand 58b6c4d277
Handle broadcasts as groups in Whatsapp (#1213)
The current way to get the correct JID of a WhatsApp group is to dump all JIDs to the log and grab the right one. This is working for for groups fine but not for broadcast, as they are not print out.

According to https://www.npmjs.com/package/@noamalffasy/js-whatsapp we have these possibilities:
* Chats: `[country code][phone number]@s.whatsapp.net`
* Groups: `[country code][phone number of creator]-[timestamp of group creation]@g.us`
* Broadcast Channels: `[timestamp of group creation]@broadcast`

But the bridge does currently interprets (and prints) the only second option.
4 years ago
NikkyAI 27c02549c8
Replace gorilla with melody for websocket API (#1205) 4 years ago
Wim d5feda5c8a
Fix error loop (zulip) (#1210)
Fixes #1047
4 years ago
Wim 2f506425c2
Update whatsapp vendor and fix a panic (#1209)
* Fix another whatsapp panic

* Update whatsapp vendor
4 years ago
Wim 56159b9bce
Sleep when ratelimited on joins (matrix). Fixes #1201 (#1206) 4 years ago
Ben Wiederhake b2af76e7dc
Support Telegram animated stickers (tgs) format (#1173)
This is half a fix for #874

This patch introduces a new config flag:
- MediaConvertTgs

These need to be treated independently from the existing
MediaConvertWebPToPNG flag because Tgs→WebP results in an
*animated* WebP, and the WebP→PNG converter can't handle
animated WebP files yet.

Furthermore, some platforms (like discord) don't even support
animated WebP files, so the user may want to fall back to
static PNGs (not APNGs).

The final reason why this is only half a fix is that this
introduces an external dependency, namely lottie, to be
installed like this:

$ pip3 install lottie cairosvg

This patch works by writing the tgs to a temporary file in /tmp,
calling lottie to convert it (this conversion may take several seconds!),
and then deleting the temporary file.
The temporary file is absolutely necessary, as lottie refuses to
work on non-seekable files.
If anyone comes up with a reasonable use case where /tmp is
unavailable, I can add yet another config option for that, if desired.

Telegram will bail out if the option is configured but lottie isn't found.
4 years ago
Dellle 63a1847cdc
Remove HTML formatting for push messages (#1188) (#1189)
When there is a valid HTML formatting then remove this in the cleartext
field of the matrix client. This leads to nicer push messages on
smartphone apps.

Fix #1188
4 years ago
Wim 4e50fd8649
Use mattermost v5 module (#1192) 4 years ago
Wim ebd2073144
Handle panic in whatsapp. Fixes #1180 (#1184) 4 years ago
Gary Kim 71a5b72aff
Add Nextcloud Talk support (#1167)
Signed-off-by: Gary Kim <gary@garykim.dev>
4 years ago
z3bra 213bf349c3
Add an option to log into a file rather than stdout (#1168)
Use Logfile option in the `[general]` section
4 years ago
Andrey Groshev a94fe55886
Fix MarkdownV2 support in Telegram (#1169) 4 years ago
haykam821 9b22f16497
Add websocket to API (#970)
Co-authored-by: Qais Patankar <qaisjp@gmail.com>
4 years ago
Nathanaël 1fee323247
Reload user information when a new contact is detected (whatsapp) (#1160)
Before returning an empty string, we refresh the WhatsApp contacts and if we found the one we wanted, we can return a real name. Fixes #796
4 years ago
Qais Patankar a41accd033
Add sane RemoteNickFormat default for API (#1157) 4 years ago
James Lu 37f7caf7f3
Skip gIRC built-in rate limiting (irc) (#1164)
By default, gIRC rate limits all outgoing messages. 
Since matterbridge already implements message throttling, this is extra layer of throttling is not necessary.
4 years ago
TheHolyRoger 5847f7758c
Only colour IRC nicks if there is one. (#1161) 4 years ago
Wim 7f7ca697a0
Ignore non-user messages (msteams). Fixes #1141 (#1149)
Ignore these messages for now, also add a extra
debug option for msteams so we can dump the whole
message.
4 years ago
Alexander 900375679b
Prevent re-requesting avatar data (xmpp) (#1117)
Prevent asking the server again and again for a
user's avatar if the server does not respond to
our initial request.
4 years ago
Wim 393f9e998b
Update dependencies / vendor (#1146) 4 years ago
Wim ba0bfe70a8
Add StripMarkdown option (irc). (#1145)
Enable `StripMarkdown` to strip markdown for irc.
4 years ago
Wim 3c4a3e3f75
Implement xep-0245 (xmpp). Closes #1137 (#1144) 4 years ago
Wim 274fb09ed4
Fix forward from hidden users (telegram). Closes #1131 (#1143)
Use ForwardDate to check if a message is forwarded.
If we have a nil ForwardedFrom then make this an unknown user.
4 years ago
Wim d44598a900
Add an option to disable sending HTML to matrix. Fixes #1022 (#1135) 4 years ago
Wim c9cfa59f54
Do not use webhooks when token is configured (slack) (fixes #1123) (#1134) 4 years ago
Tiago Epifânio 7062234331
Avoid creating invalid url when the user doesn't have an avatar (matrix) (#1130) 4 years ago
Qais Patankar 9754569525
Fix webhook EventUserAction messages being skipped (discord) (#1133)
Fixes #1132
4 years ago
Qais Patankar 52a071e34d
Fix #1049: missing space before embeds (discord) (#1124) 4 years ago
Qais Patankar 2d8f749e36
Fix #1120: replaceAction "_" crash (discord) (#1121) 4 years ago
Wim eaf92fca4d
Add an ID cache (discord). Fixes #1106 (#1111)
When a webhook "edits" a message, it does this by deleting the message
and creating a new one with the new content.

On creation of this new message, we'll get another ID then already is
know by the gateway in its id cache. So we add it in our own cache and
replace it whenever we want to edit/delete it again.
4 years ago
Wim d99c54343a
Remove panics and retry polling on failure (msteams). Fixes #1104 (#1105) 4 years ago
Wim e564c555d7
Clip too long messages on 3000 length (slack). Fixes #1081 (#1102) 4 years ago
Wim f7ec9af9e8
Add extra space before colon in attachments (irc). Fixes #1089 (#1101) 4 years ago
Wim 4d93a774ce
Ignore non-critical errors (whatsapp). Fixes #1094 (#1100) 4 years ago
Wim 9190365289
Add JoinDelay option (irc). Fixes #1084 (#1098) 4 years ago
Wim 57794b3b9f
Prevent image/message looping (slack). Fixes #1088 (#1096)
Also check for our matterbridge ID in Blocks set in SubMessages.
4 years ago