matrix-appservice-discord: +2 patches
This commit is contained in:
parent
1a8c927f8b
commit
797ceec787
|
@ -42,6 +42,29 @@ matrix-appservice-discord.overrideAttrs (old: {
|
|||
hash = "sha256-1qb4Zah1XKzxTpVJqOOqz+TiXMFmnsIMZeuqJQdqSIA=";
|
||||
name = "bridge-matrix-edits-2.patch";
|
||||
})
|
||||
# https://github.com/matrix-org/matrix-appservice-discord/pull/862
|
||||
(fetchpatch {
|
||||
url = "https://github.com/matrix-org/matrix-appservice-discord/commit/3106957ebd857bc88ba3f62182a61dd00275f2fc.patch";
|
||||
hash = "sha256-Xf+TuWXNVqi+0YRwBbCkLcMfsYNxq1ZlsgLWpwjqPww=";
|
||||
name = "discord-to-matrix-reactions-1.patch";
|
||||
})
|
||||
(fetchpatch {
|
||||
url = "https://github.com/matrix-org/matrix-appservice-discord/commit/a8186874b03c545a8728892b299a4367776fc538.patch";
|
||||
hash = "sha256-Hq2HY44hPeGPXI3MglyN7Am+NCNAHAbr2hYhXvDYtGk=";
|
||||
name = "discord-to-matrix-reactions-2.patch";
|
||||
})
|
||||
(fetchpatch {
|
||||
url = "https://github.com/matrix-org/matrix-appservice-discord/commit/da2c3b88c7dd4f3a679890c58f934e9b2ed775df.patch";
|
||||
hash = "sha256-4NMAr+Ni+7pI/I007YH5Y+4ZwAhwg91/BXGvLVcO0BQ=";
|
||||
name = "discord-to-matrix-reactions-3.patch";
|
||||
})
|
||||
(fetchpatch {
|
||||
url = "https://github.com/matrix-org/matrix-appservice-discord/commit/a33f269c88c432c532d7816f180e5262d73ebf02.patch";
|
||||
hash = "sha256-0WkfDkQsDoxfKH3MgPb893UPDPxeWueQwVSaxD2RKAw=";
|
||||
name = "discord-to-matrix-reactions-4.patch";
|
||||
})
|
||||
./reactions-as-mxc-urls.patch
|
||||
./disable-attachment-forwarding-to-matrix.patch
|
||||
./reduce-spamminess.patch
|
||||
];
|
||||
})
|
||||
|
|
100
pkgs/matrix-appservice-discord/reactions-as-mxc-urls.patch
Normal file
100
pkgs/matrix-appservice-discord/reactions-as-mxc-urls.patch
Normal file
|
@ -0,0 +1,100 @@
|
|||
diff --git a/src/bot.ts b/src/bot.ts
|
||||
index 4445aa6..8613b5a 100644
|
||||
--- a/src/bot.ts
|
||||
+++ b/src/bot.ts
|
||||
@@ -1199,7 +1199,9 @@ export class DiscordBot {
|
||||
|
||||
public async OnMessageReactionAdd(reaction: Discord.MessageReaction, user: Discord.User | Discord.PartialUser) {
|
||||
const message = reaction.message;
|
||||
- const reactionName = reaction.emoji.name;
|
||||
+ const reactionName = (reaction.emoji.id
|
||||
+ ? await this.GetEmoji(reaction.emoji.name, reaction.emoji.animated, reaction.emoji.id) + "#" + reaction.emoji.name
|
||||
+ : reaction.emoji.name);
|
||||
log.verbose(`Got message reaction add event for ${message.id} with ${reactionName}`);
|
||||
|
||||
const storeEvent = await this.store.Get(DbEvent, {
|
||||
@@ -1229,7 +1231,7 @@ export class DiscordBot {
|
||||
const reactionEventId = await intent.underlyingClient.unstableApis.addReactionToEvent(
|
||||
roomId,
|
||||
eventId,
|
||||
- reaction.emoji.id ? `:${reactionName}:` : reactionName
|
||||
+ reactionName,
|
||||
);
|
||||
|
||||
const event = new DbEvent();
|
||||
@@ -1246,7 +1248,10 @@ export class DiscordBot {
|
||||
|
||||
public async OnMessageReactionRemove(reaction: Discord.MessageReaction, user: Discord.User | Discord.PartialUser) {
|
||||
const message = reaction.message;
|
||||
- log.verbose(`Got message reaction remove event for ${message.id} with ${reaction.emoji.name}`);
|
||||
+ const reactionName = (reaction.emoji.id
|
||||
+ ? await this.GetEmoji(reaction.emoji.name, reaction.emoji.animated, reaction.emoji.id) + "#" + reaction.emoji.name
|
||||
+ : reaction.emoji.name);
|
||||
+ log.verbose(`Got message reaction remove event for ${message.id} with ${reactionName}`);
|
||||
|
||||
const storeEvent = await this.store.Get(DbEvent, {
|
||||
discord_id: message.id,
|
||||
@@ -1274,7 +1279,7 @@ export class DiscordBot {
|
||||
|
||||
const underlyingClient = intent.underlyingClient;
|
||||
|
||||
- const { chunk } = await underlyingClient.unstableApis.getRelationsForEvent(
|
||||
+ const { chunk } = await underlyingClient.getRelationsForEvent(
|
||||
roomId,
|
||||
eventId,
|
||||
"m.annotation"
|
||||
@@ -1285,7 +1290,7 @@ export class DiscordBot {
|
||||
return false;
|
||||
}
|
||||
|
||||
- return event.content["m.relates_to"].key === reaction.emoji.name;
|
||||
+ return event.content["m.relates_to"].key === reactionName;
|
||||
});
|
||||
|
||||
if (!event) {
|
||||
@@ -1324,7 +1329,7 @@ export class DiscordBot {
|
||||
const [ eventId, roomId ] = storeEvent.MatrixId.split(";");
|
||||
const underlyingClient = this.bridge.botIntent.underlyingClient;
|
||||
|
||||
- const { chunk } = await underlyingClient.unstableApis.getRelationsForEvent(
|
||||
+ const { chunk } = await underlyingClient.getRelationsForEvent(
|
||||
roomId,
|
||||
eventId,
|
||||
"m.annotation"
|
||||
diff --git a/test/mocks/appservicemock.ts b/test/mocks/appservicemock.ts
|
||||
index 06cc3ce..f6ef585 100644
|
||||
--- a/test/mocks/appservicemock.ts
|
||||
+++ b/test/mocks/appservicemock.ts
|
||||
@@ -281,6 +281,10 @@ class MatrixClientMock extends AppserviceMockBase {
|
||||
public async redactEvent(roomId: string, eventId: string, reason?: string | null) {
|
||||
this.funcCalled("redactEvent", roomId, eventId, reason);
|
||||
}
|
||||
+
|
||||
+ public async getRelationsForEvent(roomId: string, eventId: string, relationType?: string, eventType?: string): Promise<any> {
|
||||
+ this.funcCalled("getRelationsForEvent", roomId, eventId, relationType, eventType);
|
||||
+ }
|
||||
}
|
||||
|
||||
class UnstableApis extends AppserviceMockBase {
|
||||
@@ -288,8 +292,4 @@ class UnstableApis extends AppserviceMockBase {
|
||||
public async addReactionToEvent(roomId: string, eventId: string, emoji: string) {
|
||||
this.funcCalled("addReactionToEvent", roomId, eventId, emoji);
|
||||
}
|
||||
-
|
||||
- public async getRelationsForEvent(roomId: string, eventId: string, relationType?: string, eventType?: string): Promise<any> {
|
||||
- this.funcCalled("getRelationsForEvent", roomId, eventId, relationType, eventType);
|
||||
- }
|
||||
}
|
||||
diff --git a/test/test_discordbot.ts b/test/test_discordbot.ts
|
||||
index 9c9e469..2109bb7 100644
|
||||
--- a/test/test_discordbot.ts
|
||||
+++ b/test/test_discordbot.ts
|
||||
@@ -501,7 +501,7 @@ describe("DiscordBot", () => {
|
||||
discordBot = getDiscordBot();
|
||||
const intent = mockBridge.getIntent(author.id);
|
||||
|
||||
- intent.underlyingClient.unstableApis.getRelationsForEvent = async () => {
|
||||
+ intent.underlyingClient.getRelationsForEvent = async () => {
|
||||
return {
|
||||
chunk: [
|
||||
{
|
28
pkgs/matrix-appservice-discord/reduce-spamminess.patch
Normal file
28
pkgs/matrix-appservice-discord/reduce-spamminess.patch
Normal file
|
@ -0,0 +1,28 @@
|
|||
diff --git a/src/config.ts b/src/config.ts
|
||||
index 1e2f862..fd6e411 100644
|
||||
--- a/src/config.ts
|
||||
+++ b/src/config.ts
|
||||
@@ -163,7 +163,7 @@ export class LoggingFile {
|
||||
|
||||
class DiscordBridgeConfigGhosts {
|
||||
public nickPattern: string = ":nick";
|
||||
- public usernamePattern: string = ":username#:tag";
|
||||
+ public usernamePattern: string = ":username";
|
||||
}
|
||||
|
||||
export class DiscordBridgeConfigMetrics {
|
||||
diff --git a/src/usersyncroniser.ts b/src/usersyncroniser.ts
|
||||
index b82722d..fb534c6 100644
|
||||
--- a/src/usersyncroniser.ts
|
||||
+++ b/src/usersyncroniser.ts
|
||||
@@ -207,6 +207,10 @@ export class UserSyncroniser {
|
||||
log.warn("Remote user wasn't found, using blank avatar");
|
||||
}
|
||||
const intent = this.bridge.getIntentForUserId(memberState.mxUserId);
|
||||
+ const oldState = await intent.underlyingClient.getRoomStateEvent(roomId, "m.room.member", memberState.mxUserId);
|
||||
+ if (oldState && (oldState.avatar_url || "") == avatar && (oldState.displayname || "") == memberState.displayName) {
|
||||
+ return;
|
||||
+ }
|
||||
/* The intent class tries to be smart and deny a state update for <PL50 users.
|
||||
Obviously a user can change their own state so we use the client instead. */
|
||||
await intent.underlyingClient.sendStateEvent(roomId, "m.room.member", memberState.mxUserId, {
|
Loading…
Reference in a new issue