mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-09-30 15:17:43 -05:00
discord api test
This commit is contained in:
31
package-lock.json
generated
31
package-lock.json
generated
@@ -2768,6 +2768,14 @@
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"tweetnacl": "^0.14.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"tweetnacl": {
|
||||
"version": "0.14.5",
|
||||
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
|
||||
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"big.js": {
|
||||
@@ -4412,6 +4420,14 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"discord-interactions": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/discord-interactions/-/discord-interactions-1.4.1.tgz",
|
||||
"integrity": "sha512-JLB+uAWEluymJWlJkQ9GJui2cYdTMM3pGOEN5j3p2S/+7xdRjjGtqGgRGAqA5tyPVUHHchtsV/EAooVgM0cVBg==",
|
||||
"requires": {
|
||||
"tweetnacl": "^1.0.3"
|
||||
}
|
||||
},
|
||||
"dom-helpers": {
|
||||
"version": "3.4.0",
|
||||
"resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz",
|
||||
@@ -9593,6 +9609,14 @@
|
||||
"jsbn": "~0.1.0",
|
||||
"safer-buffer": "^2.0.2",
|
||||
"tweetnacl": "~0.14.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"tweetnacl": {
|
||||
"version": "0.14.5",
|
||||
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
|
||||
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"ssri": {
|
||||
@@ -10229,10 +10253,9 @@
|
||||
}
|
||||
},
|
||||
"tweetnacl": {
|
||||
"version": "0.14.5",
|
||||
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
|
||||
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
|
||||
"dev": true
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz",
|
||||
"integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw=="
|
||||
},
|
||||
"type": {
|
||||
"version": "1.2.0",
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
"@prisma/client": "^2.13.1",
|
||||
"@sendou/react-sketch": "^0.5.2",
|
||||
"countries-list": "^2.5.6",
|
||||
"discord-interactions": "^1.4.1",
|
||||
"framer-motion": "^3.1.1",
|
||||
"next": "^10.0.3",
|
||||
"next-auth": "^3.1.0",
|
||||
@@ -39,6 +40,7 @@
|
||||
"next-images": "^1.6.2",
|
||||
"next-seo": "^4.17.0",
|
||||
"nprogress": "^0.2.0",
|
||||
"raw-body": "^2.4.1",
|
||||
"react": "^17.0.1",
|
||||
"react-dom": "^17.0.1",
|
||||
"react-draggable": "^4.4.3",
|
||||
|
||||
69
pages/api/discord.ts
Normal file
69
pages/api/discord.ts
Normal file
@@ -0,0 +1,69 @@
|
||||
import { verifyKey } from "discord-interactions";
|
||||
import { NextApiRequest, NextApiResponse } from "next";
|
||||
import getRawBody from "raw-body";
|
||||
|
||||
/*
|
||||
{
|
||||
"type": 2,
|
||||
"token": "A_UNIQUE_TOKEN",
|
||||
"member": {
|
||||
"user": {
|
||||
"id": 53908232506183680,
|
||||
"username": "Mason",
|
||||
"avatar": "a_d5efa99b3eeaa7dd43acca82f5692432",
|
||||
"discriminator": "1337",
|
||||
"public_flags": 131141
|
||||
},
|
||||
"roles": ["539082325061836999"],
|
||||
"premium_since": null,
|
||||
"permissions": "2147483647",
|
||||
"pending": false,
|
||||
"nick": null,
|
||||
"mute": false,
|
||||
"joined_at": "2017-03-13T19:19:14.040000+00:00",
|
||||
"is_pending": false,
|
||||
"deaf": false
|
||||
},
|
||||
"id": "786008729715212338",
|
||||
"guild_id": "290926798626357999",
|
||||
"data": {
|
||||
"options": [{
|
||||
"name": "cardname",
|
||||
"value": "The Gitrog Monster"
|
||||
}],
|
||||
"name": "cardsearch",
|
||||
"id": "771825006014889984"
|
||||
},
|
||||
"channel_id": "645027906669510667"
|
||||
}
|
||||
*/
|
||||
|
||||
const discordCommandHandler = async (
|
||||
req: NextApiRequest,
|
||||
res: NextApiResponse
|
||||
) => {
|
||||
const PUBLIC_KEY =
|
||||
"90bc7521c9602f53db2c93c6a00a68d71a4dbb703f8dc91ef66eb2462ad63d93";
|
||||
|
||||
const signature = req.headers["X-Signature-Ed25519"] as string;
|
||||
const timestamp = req.headers["X-Signature-Timestamp"] as string;
|
||||
const body = await getRawBody(req); // rawBody is expected to be a string, not raw bytes
|
||||
|
||||
const isValidRequest = verifyKey(body, signature, timestamp, PUBLIC_KEY);
|
||||
if (!isValidRequest) {
|
||||
return res.status(401).end("Bad request signature");
|
||||
}
|
||||
|
||||
// if req.json type === 1
|
||||
res.status(200).json({
|
||||
type: 1,
|
||||
});
|
||||
};
|
||||
|
||||
export default discordCommandHandler;
|
||||
|
||||
export const config = {
|
||||
api: {
|
||||
bodyParser: false,
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user