Skip to content

Commit

Permalink
Merge branch 'master' into docs
Browse files Browse the repository at this point in the history
  • Loading branch information
kevinlul authored Jul 28, 2024
2 parents 6a6205b + b8f4deb commit b8c0c6c
Show file tree
Hide file tree
Showing 8 changed files with 975 additions and 974 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ jobs:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- uses: docker/build-push-action@v5
- uses: docker/build-push-action@v6
with:
push: ${{ github.event_name == 'push' }}
tags: ${{ steps.meta.outputs.tags }}
Expand Down
16 changes: 8 additions & 8 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
ARG NODE_VERSION=20-bullseye
FROM node:${NODE_VERSION} as base
FROM node:${NODE_VERSION} AS base
WORKDIR /app
COPY package*.json yarn.lock ./
RUN yarn --prod
RUN cat /etc/os-release /etc/debian_version && node --version && yarn --prod

FROM base as dev
FROM base AS dev
RUN yarn

FROM dev as build
FROM dev AS build
COPY . .
RUN yarn build

FROM base
ARG BOT_REVISION
LABEL org.opencontainers.image.title Bastion Discord bot
LABEL org.opencontainers.image.authors [email protected]
LABEL org.opencontainers.image.licenses AGPL-3.0-or-later
LABEL org.opencontainers.image.revision ${BOT_REVISION}
LABEL org.opencontainers.image.title="Bastion Discord bot"
LABEL org.opencontainers.image.authors=[email protected]
LABEL org.opencontainers.image.licenses=AGPL-3.0-or-later
LABEL org.opencontainers.image.revision=${BOT_REVISION}
ENV BOT_REVISION=${BOT_REVISION}
WORKDIR /app
COPY COPYING .
Expand Down
20 changes: 9 additions & 11 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,12 @@
"yarn": "1.22.x"
},
"dependencies": {
"@sinclair/typebox": "^0.32.31",
"@sinclair/typebox": "^0.32.34",
"basic-ftp": "^5.0.5",
"better-sqlite3": "^11.0.0",
"debug": "^4.3.4",
"better-sqlite3": "^11.1.2",
"debug": "^4.3.5",
"discord-markdown": "2.5.1",
"discord.js": "~14.14.1",
"discord.js": "~14.15.3",
"dotenv": "^16.4.5",
"gettext-parser": "^6.0.0",
"got": "^11.8.6",
Expand All @@ -43,14 +43,14 @@
"ydke": "^1.1.0"
},
"devDependencies": {
"@alphakretin/essentials": "^6.1.0",
"@types/better-sqlite3": "^7.6.10",
"@alphakretin/essentials": "^6.2.0",
"@types/better-sqlite3": "^7.6.11",
"@types/debug": "^4.1.12",
"@types/gettext-parser": "^4.0.4",
"@types/jest": "^29.5.12",
"@types/whatwg-mimetype": "^3.0.2",
"jest": "^29.7.0",
"ts-jest": "^29.1.4",
"ts-jest": "^29.2.2",
"ttag-cli": "^1.10.12",
"whatwg-mimetype": "^4.0.0"
},
Expand All @@ -60,11 +60,9 @@
"zlib-sync": "^0.1.9"
},
"resolutions": {
"@types/node": "^20.12.12",
"@types/node": "^20.14.11",
"http2-wrapper": "^2.2.1",
"make-dir": "^4.0.0",
"semver": "^7.6.2",
"undici": "^5.28.4"
"semver": "^7.6.3"
},
"jest": {
"clearMocks": true,
Expand Down
6 changes: 2 additions & 4 deletions src/events/message-ping.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,8 @@ export class PingMessageListener implements Listener<"messageCreate"> {
if (shouldIgnore(message)) {
return;
}
if (
message.client.user &&
message.mentions.has(message.client.user, { ignoreEveryone: true, ignoreRoles: true })
) {
// Only if directly pinged by name in message content (not by reply or group ping)
if (message.mentions.parsedUsers.has(message.client.user.id)) {
if (!this.eventLocks.has(message.id, PingMessageListener.name)) {
this.log("verbose", message, "skipNoLock");
return;
Expand Down
2 changes: 0 additions & 2 deletions src/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -153,8 +153,6 @@ export function splitText(outString: string, cap = 1024): string[] {

export function shouldIgnore(message: Message): boolean {
return (
// Ignore replies to prevent overtriggering as they are treated as pings
!!message.reference ||
// Ignore system messages as we cannot reply to them
message.system ||
// Ignore bots to prevent infinite loops and other potentially malicious abuse, except from our Singing Lanius
Expand Down
4 changes: 3 additions & 1 deletion test/unit/art.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,9 @@ describe("ArtSwitcher", () => {
}
];
it.each(["reply", "editReply"] as const)("shows first of two illustrations using %s", async method => {
awaitMessageComponent.mockRejectedValue(new DiscordjsError(DiscordjsErrorCodes.InteractionCollectorError));
awaitMessageComponent.mockRejectedValue(
Reflect.construct(DiscordjsError, [DiscordjsErrorCodes.InteractionCollectorError])
);
const interaction = { ...mockInteraction, user: {} } as unknown as ChatInputCommandInteraction;
const switcher = new ArtSwitcher(CARTESIA_IMAGES, "test");
await switcher.send(interaction, method, "en");
Expand Down
21 changes: 6 additions & 15 deletions test/unit/events/message-ping.spec.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Message } from "discord.js";
import { Collection, Message } from "discord.js";
import { PingMessageListener } from "../../../src/events";
import { Locale, LocaleProvider } from "../../../src/locale";

Expand Down Expand Up @@ -32,7 +32,7 @@ describe("Message event listener", () => {
const listener = new PingMessageListener(new MockLocaleProvider(), eventLocks);

let message: Message;
const user = {};
const user = { id: "383854640694820865" };
beforeEach(() => {
message = new MockMessage();
Object.defineProperty(message, "channel", { value: { id: "0" } });
Expand All @@ -44,7 +44,9 @@ describe("Message event listener", () => {
}
});
message.mentions = new MessageMentions();
message.mentions.has = jest.fn(thing => thing === user);
Object.defineProperty(message.mentions, "parsedUsers", {
value: new Collection([["383854640694820865", user]])
});
message.createdTimestamp = 0;
message.reply = jest.fn(async () => message);
message.edit = jest.fn();
Expand All @@ -57,17 +59,6 @@ describe("Message event listener", () => {
expect(message.reply).not.toHaveBeenCalled();
});

test("ignores replies", async () => {
message.reference = {
guildId: "0",
channelId: "1",
messageId: "0"
};

await listener.run(message);
expect(message.reply).not.toHaveBeenCalled();
});

test("ignores system message", async () => {
message.system = true;

Expand All @@ -76,7 +67,7 @@ describe("Message event listener", () => {
});

test("only responds to mentions", async () => {
message.mentions.has = jest.fn(() => false);
message.mentions.parsedUsers.clear();

await listener.run(message);
expect(message.reply).not.toHaveBeenCalled();
Expand Down
Loading

0 comments on commit b8c0c6c

Please sign in to comment.