Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions components/discord_bot/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@pipedream/discord_bot",
"version": "0.5.5",
"version": "0.6.0",
"description": "Pipedream Discord_bot Components",
"main": "discord_bot.app.js",
"keywords": [
Expand All @@ -10,7 +10,7 @@
"homepage": "https://pipedream.com/apps/discord_bot",
"author": "Pipedream <[email protected]> (https://pipedream.com/)",
"dependencies": {
"@pipedream/platform": "^1.6.0",
"@pipedream/platform": "^3.0.3",
"form-data": "^4.0.0",
"lodash.maxby": "^4.6.0"
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ export default {
name: "New Forum Thread Message",
description: "Emit new event for each forum thread message posted. Note that your bot must have the `MESSAGE_CONTENT` privilege intent to see the message content, [see the docs here](https://discord.com/developers/docs/topics/gateway#message-content-intent).",
type: "source",
version: "0.0.3",
version: "0.0.4",
dedupe: "unique", // Dedupe events based on the Discord message ID
props: {
...common.props,
Expand All @@ -36,6 +36,14 @@ export default {
description: "Select the forum you want to watch.",
},
},
methods: {
...common.methods,
getChannel(id) {
return this.discord._makeRequest({
path: `/channels/${id}`,
});
},
},
async run({ $ }) {
// We store a cursor to the last message ID
let lastMessageIDs = this._getLastMessageIDs();
Expand Down Expand Up @@ -107,6 +115,11 @@ export default {

console.log(`${messages.length} new messages in thread ${channelId}`);

messages = await Promise.all(messages.map(async (message) => ({
...message,
thread: await this.getChannel(message.channel_id),
})));

messages.reverse().forEach((message) => {
this.$emit(message, {
id: message.id, // dedupes events based on this ID
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
import { DEFAULT_POLLING_SOURCE_TIMER_INTERVAL } from "@pipedream/platform";
import common from "../common.mjs";
import sampleEmit from "./test-event.mjs";

export default {
...common,
key: "discord_bot-new-tag-added-to-thread",
name: "New Tag Added to Thread",
description: "Emit new event when a new tag is added to a thread",
type: "source",
version: "0.0.1",
dedupe: "unique",
props: {
...common.props,
db: "$.service.db",
timer: {
type: "$.interface.timer",
default: {
intervalSeconds: DEFAULT_POLLING_SOURCE_TIMER_INTERVAL,
},
},
},
hooks: {
async deploy() {
const tags = {};
const { threads } = await this.discord.listThreads({
guildId: this.guildId,
});
threads.forEach((thread) => {
if (thread?.applied_tags) {
tags[thread.id] = thread?.applied_tags;
}
});
this._setTags(tags);
},
},
methods: {
...common.methods,
_getTags() {
return this.db.get("tags") || {};
},
_setTags(tags) {
this.db.set("tags", tags);
},
generateMeta(thread) {
return {
id: thread.id,
summary: `New tag in thread ${thread.id}`,
ts: Date.now(),
};
},
},
async run() {
let tags = this._getTags();

const { threads } = await this.discord.listThreads({
guildId: this.guildId,
});

for (const thread of threads) {
if (!thread.applied_tags) {
continue;
}
if (thread.applied_tags.some((tag) => !tags[thread.id] || !tags[thread.id].includes(tag))) {
const meta = this.generateMeta(thread);
this.$emit(thread, meta);

tags[thread.id] = thread.applied_tags;
}
}

this._setTags(tags);
},
sampleEmit,
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
export default {
"id": "1301256410990116917",
"type": 11,
"last_message_id": "1301256410990116917",
"flags": 0,
"guild_id": "901259362205589565",
"name": "hello world",
"parent_id": "1301256016934994024",
"rate_limit_per_user": 0,
"bitrate": 64000,
"user_limit": 0,
"rtc_region": null,
"owner_id": "867892178135023656",
"thread_metadata": {
"archived": false,
"archive_timestamp": "2024-10-30T18:48:24.555000+00:00",
"auto_archive_duration": 4320,
"locked": false,
"create_timestamp": "2024-10-30T18:48:24.555000+00:00"
},
"message_count": 0,
"member_count": 1,
"total_message_sent": 0,
"applied_tags": [
"1301256232052457563",
"1301281978968178759"
]
}
12 changes: 3 additions & 9 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading