The weeb for the next gen discord boat - Wamellow wamellow.com
bot discord
4
fork

Configure Feed

Select the types of activity you want to include in your feed.

add discord lib

Luna fad8eac2 a137e285

+115 -1
+1 -1
app/dashboard/[guildId]/custom-commands/page.tsx
··· 14 14 import TextInput from "@/components/inputs/TextInput"; 15 15 import { ScreenMessage } from "@/components/screen-message"; 16 16 import { cacheOptions, getData } from "@/lib/api"; 17 - import { Permissions } from "@/lib/discord"; 17 + import { Permissions } from "@/lib/discord/enum/permissions"; 18 18 import SadWumpusPic from "@/public/sad-wumpus.gif"; 19 19 import { ApiV1GuildsModulesTagsGetResponse } from "@/typings"; 20 20
lib/discord.ts lib/discord/enum/permissions.ts
+3
lib/discord/index.ts
··· 1 + import { REST } from "@discordjs/rest"; 2 + 3 + export const rest = new REST({ version: "10" }).setToken(process.env.DISCORD_TOKEN as string);
+35
lib/discord/user.ts
··· 1 + import { Collection } from "@discordjs/collection"; 2 + import { APIUser, RESTGetAPIUserResult, Routes } from "discord-api-types/v10"; 3 + 4 + import { rest } from "."; 5 + 6 + const cache = new Collection<string, User>(); 7 + 8 + export default class User { 9 + constructor(data: APIUser) { 10 + this.id = data.id; 11 + this.username = data.username; 12 + this.globalName = data.global_name || null; 13 + this.avatar = data.avatar; 14 + this.bot = data.bot || false; 15 + } 16 + 17 + public id: string; 18 + public username: string; 19 + public globalName: string | null; 20 + public avatar: string | null; 21 + public bot: boolean; 22 + } 23 + 24 + export async function getUser(userId: string) { 25 + const user = cache.get(userId); 26 + if (user) return user; 27 + 28 + const userData = await rest.get(Routes.user(userId)) as RESTGetAPIUserResult; 29 + if (!userData) return null; 30 + 31 + const newUser = new User(userData); 32 + cache.set(userId, newUser); 33 + 34 + return newUser; 35 + }
+3
package.json
··· 9 9 "lint": "next lint" 10 10 }, 11 11 "dependencies": { 12 + "@discordjs/collection": "^2.0.0", 13 + "@discordjs/rest": "^2.2.0", 12 14 "@nextui-org/react": "^2.2.10", 13 15 "autoprefixer": "10.4.18", 14 16 "clsx": "^2.1.0", 17 + "discord-api-types": "^0.37.77", 15 18 "eslint": "8.57.0", 16 19 "eslint-config-next": "14.1.3", 17 20 "framer-motion": "^10.12.16",
+73
pnpm-lock.yaml
··· 5 5 excludeLinksFromLockfile: false 6 6 7 7 dependencies: 8 + '@discordjs/collection': 9 + specifier: ^2.0.0 10 + version: 2.0.0 11 + '@discordjs/rest': 12 + specifier: ^2.2.0 13 + version: 2.2.0 8 14 '@nextui-org/react': 9 15 specifier: ^2.2.10 10 16 version: 2.2.10(@types/react@18.2.69)(framer-motion@10.12.16)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)(tailwindcss@3.4.1) ··· 14 20 clsx: 15 21 specifier: ^2.1.0 16 22 version: 2.1.0 23 + discord-api-types: 24 + specifier: ^0.37.77 25 + version: 0.37.77 17 26 eslint: 18 27 specifier: 8.57.0 19 28 version: 8.57.0 ··· 119 128 regenerator-runtime: 0.14.1 120 129 dev: false 121 130 131 + /@discordjs/collection@2.0.0: 132 + resolution: {integrity: sha512-YTWIXLrf5FsrLMycpMM9Q6vnZoR/lN2AWX23/Cuo8uOOtS8eHB2dyQaaGnaF8aZPYnttf2bkLMcXn/j6JUOi3w==} 133 + engines: {node: '>=18'} 134 + dev: false 135 + 136 + /@discordjs/rest@2.2.0: 137 + resolution: {integrity: sha512-nXm9wT8oqrYFRMEqTXQx9DUTeEtXUDMmnUKIhZn6O2EeDY9VCdwj23XCPq7fkqMPKdF7ldAfeVKyxxFdbZl59A==} 138 + engines: {node: '>=16.11.0'} 139 + dependencies: 140 + '@discordjs/collection': 2.0.0 141 + '@discordjs/util': 1.0.2 142 + '@sapphire/async-queue': 1.5.2 143 + '@sapphire/snowflake': 3.5.3 144 + '@vladfrangu/async_event_emitter': 2.2.4 145 + discord-api-types: 0.37.61 146 + magic-bytes.js: 1.10.0 147 + tslib: 2.6.2 148 + undici: 5.27.2 149 + dev: false 150 + 151 + /@discordjs/util@1.0.2: 152 + resolution: {integrity: sha512-IRNbimrmfb75GMNEjyznqM1tkI7HrZOf14njX7tCAAUetyZM1Pr8hX/EK2lxBCOgWDRmigbp24fD1hdMfQK5lw==} 153 + engines: {node: '>=16.11.0'} 154 + dev: false 155 + 122 156 /@emnapi/runtime@1.1.0: 123 157 resolution: {integrity: sha512-gCGlE0fJGWalfy+wbFApjhKn6uoSVvopru77IPyxNKkjkaiSx2HxDS7eOYSmo9dcMIhmmIvoxiC3N9TM1c3EaA==} 124 158 requiresBuild: true ··· 174 208 resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} 175 209 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 176 210 211 + /@fastify/busboy@2.1.1: 212 + resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} 213 + engines: {node: '>=14'} 214 + dev: false 215 + 177 216 /@formatjs/ecma402-abstract@1.18.2: 178 217 resolution: {integrity: sha512-+QoPW4csYALsQIl8GbN14igZzDbuwzcpWrku9nyMXlaqAlwRBgl5V+p0vWMGFqHOw37czNXaP/lEk4wbLgcmtA==} 179 218 dependencies: ··· 2791 2830 resolution: {integrity: sha512-0HejFckBN2W+ucM6cUOlwsByTKt9/+0tWhqUffNIcHqCXkthY/mZ7AuYPK/2IIaGWhdl0h+tICDO0ssLMd6XMQ==} 2792 2831 dev: false 2793 2832 2833 + /@sapphire/async-queue@1.5.2: 2834 + resolution: {integrity: sha512-7X7FFAA4DngXUl95+hYbUF19bp1LGiffjJtu7ygrZrbdCSsdDDBaSjB7Akw0ZbOu6k0xpXyljnJ6/RZUvLfRdg==} 2835 + engines: {node: '>=v14.0.0', npm: '>=7.0.0'} 2836 + dev: false 2837 + 2838 + /@sapphire/snowflake@3.5.3: 2839 + resolution: {integrity: sha512-jjmJywLAFoWeBi1W7994zZyiNWPIiqRRNAmSERxyg93xRGzNYvGjlZ0gR6x0F4gPRi2+0O6S71kOZYyr3cxaIQ==} 2840 + engines: {node: '>=v14.0.0', npm: '>=7.0.0'} 2841 + dev: false 2842 + 2794 2843 /@swc/helpers@0.4.14: 2795 2844 resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==} 2796 2845 dependencies: ··· 3064 3113 3065 3114 /@ungap/structured-clone@1.2.0: 3066 3115 resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} 3116 + 3117 + /@vladfrangu/async_event_emitter@2.2.4: 3118 + resolution: {integrity: sha512-ButUPz9E9cXMLgvAW8aLAKKJJsPu1dY1/l/E8xzLFuysowXygs6GBcyunK9rnGC4zTsnIc2mQo71rGw9U+Ykug==} 3119 + engines: {node: '>=v14.0.0', npm: '>=7.0.0'} 3120 + dev: false 3067 3121 3068 3122 /acorn-jsx@5.3.2(acorn@8.11.3): 3069 3123 resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} ··· 3782 3836 dependencies: 3783 3837 path-type: 4.0.0 3784 3838 3839 + /discord-api-types@0.37.61: 3840 + resolution: {integrity: sha512-o/dXNFfhBpYHpQFdT6FWzeO7pKc838QeeZ9d91CfVAtpr5XLK4B/zYxQbYgPdoMiTDvJfzcsLW5naXgmHGDNXw==} 3841 + dev: false 3842 + 3843 + /discord-api-types@0.37.77: 3844 + resolution: {integrity: sha512-AkEn9nZA5w/XJ8wzKzlpx3X+MToQCowKahftF1+KYnMWnuglCrVRojy1XlIWX8Frgp1v8INceGKpvDkbvMLJ4g==} 3845 + dev: false 3846 + 3785 3847 /dlv@1.1.3: 3786 3848 resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 3787 3849 dev: false ··· 5198 5260 engines: {node: '>=10'} 5199 5261 dependencies: 5200 5262 yallist: 4.0.0 5263 + 5264 + /magic-bytes.js@1.10.0: 5265 + resolution: {integrity: sha512-/k20Lg2q8LE5xiaaSkMXk4sfvI+9EGEykFS4b0CHHGWqDYU0bGUFSwchNOMA56D7TCs9GwVTkqe9als1/ns8UQ==} 5266 + dev: false 5201 5267 5202 5268 /map-cache@0.2.2: 5203 5269 resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} ··· 6860 6926 /undici-types@5.26.5: 6861 6927 resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} 6862 6928 dev: true 6929 + 6930 + /undici@5.27.2: 6931 + resolution: {integrity: sha512-iS857PdOEy/y3wlM3yRp+6SNQQ6xU0mmZcwRSriqk+et/cwWAtwmIGf6WkoDN2EK/AMdCO/dfXzIwi+rFMrjjQ==} 6932 + engines: {node: '>=14.0'} 6933 + dependencies: 6934 + '@fastify/busboy': 2.1.1 6935 + dev: false 6863 6936 6864 6937 /unified@10.1.2: 6865 6938 resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==}