🦾
DiscordからNotion APIを使用してデータベースに追加してみた
作成した目的
開発でタスクを作成する際に連絡手段をDiscordを使用しているのですが
いちいちNotionを開くのがめんどくさすぎたのが背景にありました
必要なツールと環境
Discordボットのセットアップ
この方の記事を見ると分かりやすいです
Notion APIのセットアップ
この方の記事を見ると分かりやすいです
DiscordからNotionへのデータの送信
Discord側のコード
import { Client, GatewayIntentBits } from "discord.js";
import { main } from "./notionTest.js";
const client = new Client({
intents: [
GatewayIntentBits.Guilds,
GatewayIntentBits.GuildMessages,
GatewayIntentBits.MessageContent,
],
});
client.on("messageCreate", async (message) => {
if (message.author.bot) return; //BOTのメッセージには反応しない
console.log(message);
if (message.content === "タスクを作成したい") {
message.channel.send(
"タスクを作成したいのであれば\nタスク名\nタグ\n詳細\n上記に順に送ってください\nそれぞれ改行は必須です\n行の先頭に「新規作成」と書いてください"
);
}
if (message.content.includes("新規作成")) {
const lines = message.content.split("\n");
const dataObject = {
firstLine: lines[1],
secondLine: lines[2],
thirdLine: lines[3],
};
message.channel.send(
"新規作成に成功しました。下記がタスクのURLです\n" +
(await main(dataObject))
);
}
});
client.on("ready", () => {
console.log("ボットが起動したよ");
});
client.login(
"DiscordのbotTOKEN"
);
Notionのデータベースに追加するコード
import { Client } from "@notionhq/client";
// 自身の利用するデータベースID
const databaseId = "データベースのID"; // 間にハイフンがなくて大丈夫
// アクセストークン
const auth = "内部インテグレーションシークレットID";
// Initializing a client
export const main = async (message) => {
const notion = new Client({ auth });
// ページに追加するデータ
const properties = {
名前: {
title: [
{
text: {
content: message.firstLine,
},
},
],
},
タグ: {
multi_select: [
// タグは multi_select タイプ
{
name: message.secondLine,
},
],
},
テキスト: {
rich_text: [
// テキストは rich_text タイプ
{
text: {
content: message.thirdLine,
},
},
],
},
// 他のプロパティも必要に応じて設定
};
const response = await notion.pages.create({
parent: { database_id: databaseId },
properties,
});
console.log("新しいページが作成されました:", response);
return response.url;
};
実行方法
node 実行したいファイル名
nodeで起動したらあとはDiscordでテキストを送信してタスクを作成するで完了🎉
感想
とりあえずなるはやで作成したのでこれがベストではなく、基盤として
ブラッシュアップしていければいいと思っています。
Discussion