mirror of
https://github.com/discordjs/discord.js.git
synced 2026-05-23 12:00:09 +00:00
Compare commits
49 Commits
@discordjs
...
@discordjs
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
82f4827ee5 | ||
|
|
e470e088ab | ||
|
|
3d6fa248c0 | ||
|
|
273ba45e27 | ||
|
|
7a5134459c | ||
|
|
6540914b4a | ||
|
|
627511d652 | ||
|
|
a7b55c1460 | ||
|
|
1b151db59c | ||
|
|
aa8c57dab6 | ||
|
|
b14604abde | ||
|
|
73300c75fa | ||
|
|
3dede75621 | ||
|
|
3f555d5ddf | ||
|
|
976b234e9d | ||
|
|
c48ff5e420 | ||
|
|
6acf759f63 | ||
|
|
fb70df817c | ||
|
|
86959bad49 | ||
|
|
a0d6bc49c6 | ||
|
|
45faa19982 | ||
|
|
8f552a0e17 | ||
|
|
3fca638a84 | ||
|
|
4e4cbb3418 | ||
|
|
52f56d3c2e | ||
|
|
40b504a208 | ||
|
|
322cb99049 | ||
|
|
11d195d04f | ||
|
|
f13ff5c6d3 | ||
|
|
5e4331062b | ||
|
|
fff3602a8a | ||
|
|
72c30d1578 | ||
|
|
2cb1000a3a | ||
|
|
8a39c14921 | ||
|
|
4ae029dfe2 | ||
|
|
2849af0118 | ||
|
|
90d192078f | ||
|
|
b0f9b9c344 | ||
|
|
6bcebd4867 | ||
|
|
1efa95337f | ||
|
|
2f4bdf7394 | ||
|
|
4b9b62416b | ||
|
|
208378b214 | ||
|
|
6e65b45b31 | ||
|
|
2b260bd4bb | ||
|
|
cab692409d | ||
|
|
0fe503b516 | ||
|
|
999bc2069e | ||
|
|
b89bd6f67c |
3
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
3
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -16,9 +16,10 @@ body:
|
||||
- builders
|
||||
- collection
|
||||
- core
|
||||
- rest
|
||||
- formatters
|
||||
- proxy
|
||||
- proxy-container
|
||||
- rest
|
||||
- voice
|
||||
- ws
|
||||
validations:
|
||||
|
||||
4
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
4
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
@@ -14,12 +14,14 @@ body:
|
||||
label: Which package is the feature request for?
|
||||
options:
|
||||
- discord.js
|
||||
- brokers
|
||||
- builders
|
||||
- collection
|
||||
- core
|
||||
- rest
|
||||
- formatters
|
||||
- proxy
|
||||
- proxy-container
|
||||
- rest
|
||||
- voice
|
||||
- ws
|
||||
validations:
|
||||
|
||||
10
.github/labeler.yml
vendored
10
.github/labeler.yml
vendored
@@ -4,7 +4,6 @@ apps:guide:
|
||||
apps:website:
|
||||
- apps/website/*
|
||||
- apps/website/**/*
|
||||
|
||||
packages:brokers:
|
||||
- packages/brokers/*
|
||||
- packages/brokers/**/*
|
||||
@@ -23,6 +22,9 @@ packages:discord.js:
|
||||
packages:docgen:
|
||||
- packages/docgen/*
|
||||
- packages/docgen/**/*
|
||||
packages:formatters:
|
||||
- packages/formatters/*
|
||||
- packages/formatters/**/*
|
||||
packages:proxy:
|
||||
- packages/proxy/*
|
||||
- packages/proxy/**/*
|
||||
@@ -32,9 +34,9 @@ packages:proxy-container:
|
||||
packages:rest:
|
||||
- packages/rest/*
|
||||
- packages/rest/**/*
|
||||
packages/ui:
|
||||
- packages:ui/*
|
||||
- packages:ui/**/*
|
||||
packages:ui:
|
||||
- packages/ui/*
|
||||
- packages/ui/**/*
|
||||
packages:util:
|
||||
- packages/util/*
|
||||
- packages/util/**/*
|
||||
|
||||
10
.github/labels.yml
vendored
10
.github/labels.yml
vendored
@@ -20,10 +20,10 @@
|
||||
color: 0075ca
|
||||
- name: dependencies
|
||||
color: 276bd1
|
||||
- name: discussion
|
||||
color: b6b1f9
|
||||
- name: discord
|
||||
color: '5663e9'
|
||||
- name: discussion
|
||||
color: b6b1f9
|
||||
- name: documentation
|
||||
color: 0075ca
|
||||
- name: duplicate
|
||||
@@ -40,12 +40,12 @@
|
||||
color: 4b1f8e
|
||||
- name: help wanted
|
||||
color: '008672'
|
||||
- name: interactions
|
||||
color: 80c042
|
||||
- name: in progress
|
||||
color: ffccd7
|
||||
- name: in review
|
||||
color: aed5fc
|
||||
- name: interactions
|
||||
color: 80c042
|
||||
- name: invalid
|
||||
color: e4e669
|
||||
- name: need repro
|
||||
@@ -62,6 +62,8 @@
|
||||
color: fbca04
|
||||
- name: packages:docgen
|
||||
color: fbca04
|
||||
- name: packages:formatters
|
||||
color: fbca04
|
||||
- name: packages:proxy
|
||||
color: fbca04
|
||||
- name: packages:proxy-container
|
||||
|
||||
17
.github/workflows/documentation.yml
vendored
17
.github/workflows/documentation.yml
vendored
@@ -67,7 +67,20 @@ jobs:
|
||||
max-parallel: 1
|
||||
fail-fast: false
|
||||
matrix:
|
||||
package: ['brokers', 'builders', 'collection', 'core', 'discord.js', 'proxy', 'rest', 'util', 'voice', 'ws']
|
||||
package:
|
||||
[
|
||||
'brokers',
|
||||
'builders',
|
||||
'collection',
|
||||
'core',
|
||||
'discord.js',
|
||||
'formatters',
|
||||
'proxy',
|
||||
'rest',
|
||||
'util',
|
||||
'voice',
|
||||
'ws',
|
||||
]
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
|
||||
@@ -111,7 +124,7 @@ jobs:
|
||||
id: extract-tag
|
||||
uses: ./packages/actions/src/formatTag
|
||||
with:
|
||||
tag: ${{ env.GITHUB_REF_NAME }}
|
||||
tag: ${{ github.ref_name }}
|
||||
|
||||
- name: Move docs to correct directory
|
||||
if: ${{ github.ref_type == 'tag' && matrix.package == steps.extract-tag.outputs.package }}
|
||||
|
||||
2
.github/workflows/npm-auto-deprecate.yml
vendored
2
.github/workflows/npm-auto-deprecate.yml
vendored
@@ -21,6 +21,6 @@ jobs:
|
||||
uses: ./packages/actions/src/yarnCache
|
||||
|
||||
- name: Deprecate versions
|
||||
run: 'yarn npm-deprecate --name "*dev*" --package @discordjs/brokers @discordjs/builders @discordjs/collection @discordjs/core discord.js @discordjs/proxy @discordjs/rest @discordjs/util @discordjs/voice @discordjs/ws'
|
||||
run: 'yarn npm-deprecate --name "*dev*" --package @discordjs/brokers @discordjs/builders @discordjs/collection @discordjs/core @discordjs/formatters discord.js @discordjs/proxy @discordjs/rest @discordjs/util @discordjs/voice @discordjs/ws'
|
||||
env:
|
||||
NODE_AUTH_TOKEN: ${{ secrets.NPM_PUBLISH_TOKEN }}
|
||||
|
||||
2
.github/workflows/publish-dev.yml
vendored
2
.github/workflows/publish-dev.yml
vendored
@@ -18,6 +18,8 @@ jobs:
|
||||
folder: 'collection'
|
||||
- package: '@discordjs/core'
|
||||
folder: 'core'
|
||||
- package: '@discordjs/formatters'
|
||||
folder: 'formatters'
|
||||
- package: 'discord.js'
|
||||
folder: 'discord.js'
|
||||
- package: '@discordjs/proxy'
|
||||
|
||||
@@ -42,27 +42,27 @@
|
||||
"react": "^18.2.0",
|
||||
"react-custom-scrollbars-2": "^4.5.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-icons": "^4.6.0",
|
||||
"react-icons": "^4.7.1",
|
||||
"react-use": "^17.4.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@astrojs/image": "^0.11.6",
|
||||
"@astrojs/image": "^0.12.0",
|
||||
"@astrojs/mdx": "^0.12.0",
|
||||
"@astrojs/prefetch": "^0.1.1",
|
||||
"@astrojs/react": "^1.2.2",
|
||||
"@testing-library/react": "^13.4.0",
|
||||
"@testing-library/user-event": "^14.4.3",
|
||||
"@types/node": "16.18.3",
|
||||
"@types/node": "16.18.4",
|
||||
"@types/react": "^18.0.25",
|
||||
"@types/react-dom": "^18.0.9",
|
||||
"@types/react-syntax-highlighter": "^15.5.5",
|
||||
"@unocss/cli": "^0.46.5",
|
||||
"@unocss/reset": "^0.46.5",
|
||||
"@unocss/cli": "^0.47.5",
|
||||
"@unocss/reset": "^0.47.5",
|
||||
"@vitejs/plugin-react": "^2.2.0",
|
||||
"@vitest/coverage-c8": "^0.25.3",
|
||||
"astro": "^1.6.11",
|
||||
"astro-compress": "^1.1.12",
|
||||
"astro-critters": "^1.1.12",
|
||||
"astro": "^1.6.12",
|
||||
"astro-compress": "^1.1.15",
|
||||
"astro-critters": "^1.1.15",
|
||||
"cross-env": "^7.0.3",
|
||||
"eslint": "^8.28.0",
|
||||
"eslint-config-neon": "^0.1.40",
|
||||
@@ -79,8 +79,8 @@
|
||||
"sharp": "^0.31.2",
|
||||
"shiki": "^0.11.1",
|
||||
"typescript": "^4.9.3",
|
||||
"unocss": "^0.46.5",
|
||||
"vercel": "^28.5.6",
|
||||
"unocss": "^0.47.5",
|
||||
"vercel": "^28.7.0",
|
||||
"vitest": "^0.25.3"
|
||||
},
|
||||
"engines": {
|
||||
|
||||
1
apps/website/.gitignore
vendored
1
apps/website/.gitignore
vendored
@@ -21,6 +21,7 @@ typings/
|
||||
build/
|
||||
src/styles/unocss.css
|
||||
.next/
|
||||
src/assets/readme/
|
||||
|
||||
# Miscellaneous
|
||||
.tmp/
|
||||
|
||||
@@ -14,7 +14,12 @@ export default withBundleAnalyzer({
|
||||
eslint: {
|
||||
ignoreDuringBuilds: true,
|
||||
},
|
||||
// Until Next.js fixes their type issues
|
||||
typescript: {
|
||||
ignoreBuildErrors: true,
|
||||
},
|
||||
cleanDistDir: true,
|
||||
outputFileTracing: true,
|
||||
experimental: {
|
||||
appDir: true,
|
||||
serverComponentsExternalPackages: ['@microsoft/api-extractor-model', 'jju', 'shiki'],
|
||||
|
||||
@@ -5,8 +5,9 @@
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"test": "vitest run",
|
||||
"build:local": "yarn run --top-level docs --force && cross-env-shell NEXT_PUBLIC_LOCAL_DEV=true yarn build:prod",
|
||||
"build:prod": "yarn workspaces foreach -ptR run build && yarn build:css && yarn build:next",
|
||||
"build:copy_readme": "cpy '../../packages/*/README.md' 'src/assets/readme' --rename='home-{{basename}}'",
|
||||
"build:local": "yarn run --top-level docs --force && yarn build:copy_readme && cross-env-shell NEXT_PUBLIC_LOCAL_DEV=true yarn build:prod",
|
||||
"build:prod": "yarn workspaces foreach -ptR run build && yarn build:copy_readme && yarn build:css && yarn build:next",
|
||||
"build:next": "next build",
|
||||
"build:css": "yarn generate:css",
|
||||
"build:search_indicies": "yarn node scripts/generateAllIndicies.js",
|
||||
@@ -53,10 +54,9 @@
|
||||
"ariakit": "^2.0.0-next.41",
|
||||
"cmdk": "^0.1.20",
|
||||
"meilisearch": "^0.30.0",
|
||||
"next": "^13.0.5",
|
||||
"next": "^13.0.7-canary.1",
|
||||
"next-mdx-remote": "^4.2.0",
|
||||
"next-progress": "^2.2.0",
|
||||
"next-themes": "^0.2.1",
|
||||
"next-themes": "npm:@wits/next-themes@latest",
|
||||
"react": "^18.2.0",
|
||||
"react-custom-scrollbars-2": "^4.5.0",
|
||||
"react-dom": "^18.2.0",
|
||||
@@ -72,18 +72,19 @@
|
||||
"swr": "^1.3.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@next/bundle-analyzer": "^13.0.5",
|
||||
"@next/bundle-analyzer": "^13.0.6",
|
||||
"@testing-library/react": "^13.4.0",
|
||||
"@testing-library/user-event": "^14.4.3",
|
||||
"@types/node": "16.18.3",
|
||||
"@types/node": "16.18.4",
|
||||
"@types/react": "^18.0.25",
|
||||
"@types/react-dom": "^18.0.9",
|
||||
"@types/react-syntax-highlighter": "^15.5.5",
|
||||
"@unocss/cli": "^0.46.5",
|
||||
"@unocss/reset": "^0.46.5",
|
||||
"@unocss/cli": "^0.47.5",
|
||||
"@unocss/reset": "^0.47.5",
|
||||
"@vitejs/plugin-react": "^2.2.0",
|
||||
"@vitest/coverage-c8": "^0.25.3",
|
||||
"concurrently": "^7.6.0",
|
||||
"cpy-cli": "^4.2.0",
|
||||
"cross-env": "^7.0.3",
|
||||
"eslint": "^8.28.0",
|
||||
"eslint-config-neon": "^0.1.40",
|
||||
@@ -92,8 +93,8 @@
|
||||
"prettier": "^2.8.0",
|
||||
"prettier-plugin-tailwindcss": "^0.2.0",
|
||||
"typescript": "^4.9.3",
|
||||
"unocss": "^0.46.5",
|
||||
"vercel": "^28.5.6",
|
||||
"unocss": "^0.47.5",
|
||||
"vercel": "^28.7.0",
|
||||
"vitest": "^0.25.3"
|
||||
},
|
||||
"engines": {
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
'use client';
|
||||
|
||||
import type { PropsWithChildren } from 'react';
|
||||
import { CmdKProvider } from '~/contexts/cmdK';
|
||||
import { NavProvider } from '~/contexts/nav';
|
||||
|
||||
export function Providers({ children }: PropsWithChildren) {
|
||||
return (
|
||||
<NavProvider>
|
||||
<CmdKProvider>{children}</CmdKProvider>
|
||||
</NavProvider>
|
||||
);
|
||||
}
|
||||
@@ -3,7 +3,7 @@ import { Providers } from './providers';
|
||||
import { CmdKDialog } from '~/components/CmdK';
|
||||
import { Header } from '~/components/Header';
|
||||
|
||||
export default function SidebarLayout({ children }: PropsWithChildren<any>) {
|
||||
export default function SidebarLayout({ children }: PropsWithChildren) {
|
||||
return (
|
||||
<Providers>
|
||||
<Header />
|
||||
@@ -30,7 +30,7 @@ import shikiLangJavascript from 'shiki/languages/javascript.tmLanguage.json';
|
||||
import shikiLangTypescript from 'shiki/languages/typescript.tmLanguage.json';
|
||||
import shikiThemeDarkPlus from 'shiki/themes/dark-plus.json';
|
||||
import shikiThemeLightPlus from 'shiki/themes/light-plus.json';
|
||||
import vercelLogo from '../../../assets/powered-by-vercel.svg';
|
||||
import vercelLogo from '../../../../../assets/powered-by-vercel.svg';
|
||||
import { MDXRemote } from '~/components/MDXRemote';
|
||||
import { Nav } from '~/components/Nav';
|
||||
import { Class } from '~/components/model/Class';
|
||||
@@ -44,90 +44,93 @@ import { DESCRIPTION, PACKAGES } from '~/util/constants';
|
||||
import { findMember, findMemberByKey } from '~/util/model.server';
|
||||
import { tryResolveDescription } from '~/util/summary';
|
||||
|
||||
export async function generateStaticParams() {
|
||||
return (
|
||||
await Promise.all(
|
||||
PACKAGES.map(async (packageName) => {
|
||||
try {
|
||||
let data: any[] = [];
|
||||
let versions: string[] = [];
|
||||
if (process.env.NEXT_PUBLIC_LOCAL_DEV) {
|
||||
const res = await readFile(
|
||||
join(cwd(), '..', '..', 'packages', packageName, 'docs', 'docs.api.json'),
|
||||
'utf8',
|
||||
);
|
||||
data = JSON.parse(res);
|
||||
} else {
|
||||
const response = await fetch(`https://docs.discordjs.dev/api/info?package=${packageName}`);
|
||||
versions = await response.json();
|
||||
versions = versions.slice(-2);
|
||||
export async function generateStaticParams({ params }: { params?: { package: string } }) {
|
||||
const packageName = params?.package ?? 'builders';
|
||||
|
||||
for (const version of versions) {
|
||||
const res = await fetch(`https://docs.discordjs.dev/docs/${packageName}/${version}.api.json`);
|
||||
data = [...data, await res.json()];
|
||||
try {
|
||||
let data: any[] = [];
|
||||
let versions: string[] = [];
|
||||
if (process.env.NEXT_PUBLIC_LOCAL_DEV) {
|
||||
const res = await readFile(join(cwd(), '..', '..', 'packages', packageName, 'docs', 'docs.api.json'), 'utf8');
|
||||
data = JSON.parse(res);
|
||||
} else {
|
||||
const response = await fetch(`https://docs.discordjs.dev/api/info?package=${packageName}`, {
|
||||
next: { revalidate: 3_600 },
|
||||
});
|
||||
versions = await response.json();
|
||||
versions = versions.slice(-2);
|
||||
|
||||
for (const version of versions) {
|
||||
const res = await fetch(`https://docs.discordjs.dev/docs/${packageName}/${version}.api.json`);
|
||||
data = [...data, await res.json()];
|
||||
}
|
||||
}
|
||||
|
||||
if (Array.isArray(data)) {
|
||||
const models = data.map((innerData) => createApiModel(innerData));
|
||||
const pkgs = models.map((model) => findPackage(model, packageName)) as ApiPackage[];
|
||||
|
||||
return [
|
||||
...versions.map((version) => ({ slug: [version] })),
|
||||
...pkgs.flatMap((pkg, idx) =>
|
||||
getMembers(pkg, versions[idx] ?? 'main').map((member) => {
|
||||
if (member.kind === ApiItemKind.Function && member.overloadIndex && member.overloadIndex > 1) {
|
||||
return {
|
||||
slug: [versions[idx] ?? 'main', `${member.name}:${member.overloadIndex}:${member.kind}`],
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
if (Array.isArray(data)) {
|
||||
const models = data.map((innerData) => createApiModel(innerData));
|
||||
const pkgs = models.map((model) => findPackage(model, packageName)) as ApiPackage[];
|
||||
return {
|
||||
slug: [versions[idx] ?? 'main', `${member.name}:${member.kind}`],
|
||||
};
|
||||
}),
|
||||
),
|
||||
];
|
||||
}
|
||||
|
||||
return [
|
||||
...versions.map((version) => ({ slug: ['packages', packageName, version] })),
|
||||
...pkgs.flatMap((pkg, idx) =>
|
||||
getMembers(pkg, versions[idx] ?? 'main').map((member) => {
|
||||
if (member.kind === ApiItemKind.Function && member.overloadIndex && member.overloadIndex > 1) {
|
||||
return {
|
||||
slug: [
|
||||
'packages',
|
||||
packageName,
|
||||
versions[idx] ?? 'main',
|
||||
`${member.name}:${member.overloadIndex}:${member.kind}`,
|
||||
],
|
||||
};
|
||||
}
|
||||
const model = createApiModel(data);
|
||||
const pkg = findPackage(model, packageName)!;
|
||||
|
||||
return {
|
||||
slug: ['packages', packageName, versions[idx] ?? 'main', `${member.name}:${member.kind}`],
|
||||
};
|
||||
}),
|
||||
),
|
||||
];
|
||||
}
|
||||
|
||||
const model = createApiModel(data);
|
||||
const pkg = findPackage(model, packageName)!;
|
||||
|
||||
return [
|
||||
{ slug: ['packages', packageName, 'main'] },
|
||||
...getMembers(pkg, 'main').map((member) => {
|
||||
if (member.kind === ApiItemKind.Function && member.overloadIndex && member.overloadIndex > 1) {
|
||||
return {
|
||||
slug: ['packages', packageName, 'main', `${member.name}:${member.overloadIndex}:${member.kind}`],
|
||||
};
|
||||
}
|
||||
|
||||
return { slug: ['packages', packageName, 'main', `${member.name}:${member.kind}`] };
|
||||
}),
|
||||
];
|
||||
} catch {
|
||||
return { slug: [] };
|
||||
return [
|
||||
{ slug: ['main'] },
|
||||
...getMembers(pkg, 'main').map((member) => {
|
||||
if (member.kind === ApiItemKind.Function && member.overloadIndex && member.overloadIndex > 1) {
|
||||
return {
|
||||
slug: ['main', `${member.name}:${member.overloadIndex}:${member.kind}`],
|
||||
};
|
||||
}
|
||||
|
||||
return { slug: ['main', `${member.name}:${member.kind}`] };
|
||||
}),
|
||||
)
|
||||
).flat();
|
||||
];
|
||||
} catch {
|
||||
return [{ slug: ['main'] }];
|
||||
}
|
||||
}
|
||||
|
||||
async function getData(slug: string[]) {
|
||||
const [path, packageName = 'builders', branchName = 'main', member] = slug;
|
||||
async function getData(packageName: string, slug: string[]) {
|
||||
const [branchName = 'main', member] = slug;
|
||||
|
||||
if (path !== 'packages' || !PACKAGES.includes(packageName)) {
|
||||
if (!PACKAGES.includes(packageName)) {
|
||||
notFound();
|
||||
}
|
||||
|
||||
let data;
|
||||
try {
|
||||
if (process.env.NEXT_PUBLIC_LOCAL_DEV) {
|
||||
const res = await readFile(join(cwd(), '..', '..', 'packages', packageName, 'docs', 'docs.api.json'), 'utf8');
|
||||
data = JSON.parse(res);
|
||||
} else {
|
||||
const res = await fetch(`https://docs.discordjs.dev/docs/${packageName}/${branchName}.api.json`);
|
||||
data = await res.json();
|
||||
}
|
||||
} catch {
|
||||
notFound();
|
||||
}
|
||||
|
||||
const [memberName, overloadIndex] = member?.split('%3A') ?? [];
|
||||
|
||||
const readme = await readFile(join(cwd(), '..', '..', 'packages', packageName, 'README.md'), 'utf8');
|
||||
const readme = await readFile(join(cwd(), 'src', 'assets', 'readme', packageName, 'home-README.md'), 'utf8');
|
||||
|
||||
const mdxSource = await serialize(readme, {
|
||||
mdxOptions: {
|
||||
@@ -161,17 +164,6 @@ async function getData(slug: string[]) {
|
||||
},
|
||||
});
|
||||
|
||||
let data;
|
||||
if (process.env.NEXT_PUBLIC_LOCAL_DEV) {
|
||||
const res = await readFile(join(cwd(), '..', '..', 'packages', packageName, 'docs', 'docs.api.json'), 'utf8');
|
||||
data = JSON.parse(res);
|
||||
} else {
|
||||
const res = await fetch(`https://docs.discordjs.dev/docs/${packageName}/${branchName}.api.json`, {
|
||||
next: { revalidate: 3_600 },
|
||||
});
|
||||
data = await res.json();
|
||||
}
|
||||
|
||||
const model = createApiModel(data);
|
||||
const pkg = findPackage(model, packageName);
|
||||
|
||||
@@ -257,8 +249,8 @@ function member(props?: ApiItemJSON | undefined) {
|
||||
}
|
||||
}
|
||||
|
||||
export default async function Page({ params }: { params: { slug: string[] } }) {
|
||||
const data = await getData(params.slug);
|
||||
export default async function Page({ params }: { params: { package: string; slug: string[] } }) {
|
||||
const data = await getData(params.package, params.slug);
|
||||
|
||||
// const name = useMemo(
|
||||
// () => `discord.js${params.data?.member?.name ? ` | ${params.data.member.name}` : ''}`,
|
||||
@@ -388,7 +380,3 @@ export default async function Page({ params }: { params: { slug: string[] } }) {
|
||||
</MemberProvider>
|
||||
);
|
||||
}
|
||||
|
||||
export const config = {
|
||||
unstable_includeFiles: [`../../packages/{brokers,builders,collection,core,proxy,rest,util,voice,ws}/README.md`],
|
||||
};
|
||||
@@ -0,0 +1,27 @@
|
||||
'use client';
|
||||
|
||||
// import { ThemeProvider } from 'next-themes';
|
||||
import type { PropsWithChildren } from 'react';
|
||||
import { CmdKProvider } from '~/contexts/cmdK';
|
||||
import { NavProvider } from '~/contexts/nav';
|
||||
|
||||
export function Providers({ children }: PropsWithChildren) {
|
||||
return (
|
||||
<NavProvider>
|
||||
<CmdKProvider>
|
||||
{/* <ThemeProvider
|
||||
attribute="class"
|
||||
cookieName="theme"
|
||||
defaultTheme="system"
|
||||
disableTransitionOnChange
|
||||
value={{
|
||||
light: 'light',
|
||||
dark: 'dark',
|
||||
}}
|
||||
> */}
|
||||
{children}
|
||||
{/* </ThemeProvider> */}
|
||||
</CmdKProvider>
|
||||
</NavProvider>
|
||||
);
|
||||
}
|
||||
10
apps/website/src/app/docs/packages/[package]/layout.tsx
Normal file
10
apps/website/src/app/docs/packages/[package]/layout.tsx
Normal file
@@ -0,0 +1,10 @@
|
||||
import type { PropsWithChildren } from 'react';
|
||||
import { PACKAGES } from '~/util/constants';
|
||||
|
||||
export async function generateStaticParams() {
|
||||
return PACKAGES.map((packageName) => ({ package: packageName }));
|
||||
}
|
||||
|
||||
export default function PackageLayout({ children }: PropsWithChildren) {
|
||||
return children;
|
||||
}
|
||||
@@ -5,12 +5,6 @@ import Link from 'next/link';
|
||||
import { notFound } from 'next/navigation';
|
||||
import { PACKAGES } from '~/util/constants';
|
||||
|
||||
export const dynamicParams = false;
|
||||
|
||||
export async function generateStaticParams() {
|
||||
return PACKAGES.map((packageName) => ({ package: packageName }));
|
||||
}
|
||||
|
||||
async function getData(pkg: string) {
|
||||
if (!PACKAGES.includes(pkg)) {
|
||||
notFound();
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { ServerThemeProvider } from 'next-themes';
|
||||
import type { PropsWithChildren } from 'react';
|
||||
import { Providers } from './providers';
|
||||
|
||||
import '@unocss/reset/tailwind.css';
|
||||
import '../styles/inter.css';
|
||||
@@ -9,11 +9,19 @@ import '../styles/main.css';
|
||||
|
||||
export default function RootLayout({ children }: PropsWithChildren) {
|
||||
return (
|
||||
<html lang="en">
|
||||
<head />
|
||||
<body className="dark:bg-dark-800 bg-white">
|
||||
<Providers>{children}</Providers>
|
||||
</body>
|
||||
</html>
|
||||
<ServerThemeProvider
|
||||
attribute="class"
|
||||
defaultTheme="system"
|
||||
disableTransitionOnChange
|
||||
value={{
|
||||
light: 'light',
|
||||
dark: 'dark',
|
||||
}}
|
||||
>
|
||||
<html lang="en">
|
||||
<head />
|
||||
<body className="dark:bg-dark-800 bg-white">{children}</body>
|
||||
</html>
|
||||
</ServerThemeProvider>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -23,6 +23,7 @@ export default function Page() {
|
||||
<Link
|
||||
className="bg-blurple focus:ring-width-2 flex h-11 transform-gpu cursor-pointer select-none appearance-none flex-row place-items-center rounded border-0 px-6 text-base font-semibold leading-none text-white no-underline outline-0 focus:ring focus:ring-white active:translate-y-px"
|
||||
href="/docs"
|
||||
prefetch={false}
|
||||
>
|
||||
Docs
|
||||
</Link>
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
'use client';
|
||||
|
||||
import { ThemeProvider } from 'next-themes';
|
||||
import type { PropsWithChildren } from 'react';
|
||||
|
||||
export function Providers({ children }: PropsWithChildren) {
|
||||
return (
|
||||
<ThemeProvider
|
||||
attribute="class"
|
||||
defaultTheme="system"
|
||||
disableTransitionOnChange
|
||||
value={{
|
||||
light: 'light',
|
||||
dark: 'dark',
|
||||
}}
|
||||
>
|
||||
{children}
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
@@ -1,14 +1,14 @@
|
||||
'use client';
|
||||
|
||||
import { FiCommand } from '@react-icons/all-files/fi/FiCommand';
|
||||
import { VscColorMode } from '@react-icons/all-files/vsc/VscColorMode';
|
||||
// import { VscColorMode } from '@react-icons/all-files/vsc/VscColorMode';
|
||||
import { VscGithubInverted } from '@react-icons/all-files/vsc/VscGithubInverted';
|
||||
import { VscMenu } from '@react-icons/all-files/vsc/VscMenu';
|
||||
import { VscSearch } from '@react-icons/all-files/vsc/VscSearch';
|
||||
import { Button } from 'ariakit/button';
|
||||
import Link from 'next/link';
|
||||
import { usePathname } from 'next/navigation';
|
||||
import { useTheme } from 'next-themes';
|
||||
// import { useTheme } from 'next-themes';
|
||||
import { Fragment, useEffect, useMemo, useState } from 'react';
|
||||
import { useCmdK } from '~/contexts/cmdK';
|
||||
import { useNav } from '~/contexts/nav';
|
||||
@@ -17,9 +17,9 @@ export function Header() {
|
||||
const pathname = usePathname();
|
||||
// eslint-disable-next-line @typescript-eslint/unbound-method
|
||||
const { setOpened } = useNav();
|
||||
const { resolvedTheme, setTheme } = useTheme();
|
||||
// const { resolvedTheme, setTheme } = useTheme();
|
||||
const dialog = useCmdK();
|
||||
const toggleTheme = () => setTheme(resolvedTheme === 'light' ? 'dark' : 'light');
|
||||
// const toggleTheme = () => setTheme(resolvedTheme === 'light' ? 'dark' : 'light');
|
||||
const [asPathWithoutQueryAndAnchor, setAsPathWithoutQueryAndAnchor] = useState('');
|
||||
|
||||
useEffect(() => {
|
||||
@@ -111,13 +111,13 @@ export function Header() {
|
||||
>
|
||||
<VscGithubInverted size={24} />
|
||||
</Button>
|
||||
<Button
|
||||
{/* <Button
|
||||
aria-label="Toggle theme"
|
||||
className="focus:ring-width-2 focus:ring-blurple flex h-6 w-6 transform-gpu cursor-pointer select-none appearance-none flex-row place-items-center rounded-full rounded border-0 bg-transparent p-0 text-sm font-semibold leading-none no-underline outline-0 focus:ring active:translate-y-px"
|
||||
onClick={() => toggleTheme()}
|
||||
>
|
||||
<VscColorMode size={24} />
|
||||
</Button>
|
||||
</Button> */}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -7,6 +7,7 @@ export default async function middleware(request: NextRequest) {
|
||||
}
|
||||
|
||||
if (PACKAGES.some((pkg) => request.nextUrl.pathname.includes(pkg))) {
|
||||
// eslint-disable-next-line prefer-named-capture-group
|
||||
const packageName = /\/docs\/packages\/([^/]+)\/.*/.exec(request.nextUrl.pathname)?.[1] ?? 'builders';
|
||||
const res = await fetch(`https://docs.discordjs.dev/api/info?package=${packageName}`);
|
||||
const data: string[] = await res.json();
|
||||
|
||||
@@ -1,4 +1,15 @@
|
||||
export const PACKAGES = ['brokers', 'builders', 'collection', 'core', 'proxy', 'rest', 'util', 'voice', 'ws'];
|
||||
export const PACKAGES = [
|
||||
'brokers',
|
||||
'builders',
|
||||
'collection',
|
||||
'core',
|
||||
'formatters',
|
||||
'proxy',
|
||||
'rest',
|
||||
'util',
|
||||
'voice',
|
||||
'ws',
|
||||
];
|
||||
|
||||
export const DESCRIPTION =
|
||||
"discord.js is a powerful node.js module that allows you to interact with the Discord API very easily. It takes a much more object-oriented approach than most other JS Discord libraries, making your bot's code significantly tidier and easier to comprehend.";
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
"@commitlint/cli": "^17.3.0",
|
||||
"@commitlint/config-angular": "^17.3.0",
|
||||
"@favware/cliff-jumper": "^1.9.0",
|
||||
"@favware/npm-deprecate": "^1.0.6",
|
||||
"@favware/npm-deprecate": "^1.0.7",
|
||||
"conventional-changelog-cli": "^2.2.2",
|
||||
"husky": "^8.0.2",
|
||||
"is-ci": "^3.0.1",
|
||||
@@ -57,7 +57,7 @@
|
||||
"tsup": "^6.5.0",
|
||||
"turbo": "^1.6.3",
|
||||
"typescript": "^4.9.3",
|
||||
"unocss": "^0.46.5",
|
||||
"unocss": "^0.47.5",
|
||||
"vitest": "^0.25.3"
|
||||
},
|
||||
"resolutions": {
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
"tslib": "^2.4.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "16.18.3",
|
||||
"@types/node": "16.18.4",
|
||||
"@vitest/coverage-c8": "^0.25.3",
|
||||
"cross-env": "^7.0.3",
|
||||
"eslint": "^8.28.0",
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
"@microsoft/tsdoc": "0.14.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "16.18.3",
|
||||
"@types/node": "16.18.4",
|
||||
"cross-env": "^7.0.3",
|
||||
"eslint": "^8.28.0",
|
||||
"eslint-config-neon": "^0.1.40",
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
"devDependencies": {
|
||||
"@favware/cliff-jumper": "^1.9.0",
|
||||
"@microsoft/api-extractor": "^7.33.6",
|
||||
"@types/node": "16.18.3",
|
||||
"@types/node": "16.18.4",
|
||||
"@vitest/coverage-c8": "^0.25.3",
|
||||
"cross-env": "^7.0.3",
|
||||
"eslint": "^8.28.0",
|
||||
|
||||
@@ -34,7 +34,7 @@ export interface BaseBrokerOptions {
|
||||
/**
|
||||
* Default broker options
|
||||
*/
|
||||
export const DefaultBrokerOptions: Required<BaseBrokerOptions> = {
|
||||
export const DefaultBrokerOptions = {
|
||||
name: randomBytes(20).toString('hex'),
|
||||
maxChunk: 10,
|
||||
blockTimeout: 5_000,
|
||||
@@ -43,7 +43,7 @@ export const DefaultBrokerOptions: Required<BaseBrokerOptions> = {
|
||||
return Buffer.from(encoded.buffer, encoded.byteOffset, encoded.byteLength);
|
||||
},
|
||||
decode: (data): unknown => decode(data),
|
||||
};
|
||||
} as const satisfies Required<BaseBrokerOptions>;
|
||||
|
||||
export type ToEventMap<
|
||||
TRecord extends Record<string, any>,
|
||||
|
||||
@@ -21,10 +21,10 @@ export interface RPCRedisBrokerOptions extends RedisBrokerOptions {
|
||||
/**
|
||||
* Default values used for the {@link RPCRedisBrokerOptions}
|
||||
*/
|
||||
export const DefaultRPCRedisBrokerOptions: Required<Omit<RPCRedisBrokerOptions, 'redisClient'>> = {
|
||||
export const DefaultRPCRedisBrokerOptions = {
|
||||
...DefaultBrokerOptions,
|
||||
timeout: 5_000,
|
||||
};
|
||||
} as const satisfies Required<Omit<RPCRedisBrokerOptions, 'redisClient'>>;
|
||||
|
||||
/**
|
||||
* RPC broker powered by Redis
|
||||
|
||||
@@ -54,6 +54,7 @@
|
||||
},
|
||||
"homepage": "https://discord.js.org",
|
||||
"dependencies": {
|
||||
"@discordjs/formatters": "workspace:^",
|
||||
"@discordjs/util": "workspace:^",
|
||||
"@sapphire/shapeshift": "^3.7.1",
|
||||
"discord-api-types": "^0.37.20",
|
||||
@@ -64,7 +65,7 @@
|
||||
"devDependencies": {
|
||||
"@favware/cliff-jumper": "^1.9.0",
|
||||
"@microsoft/api-extractor": "^7.33.6",
|
||||
"@types/node": "16.18.3",
|
||||
"@types/node": "16.18.4",
|
||||
"@vitest/coverage-c8": "^0.25.3",
|
||||
"cross-env": "^7.0.3",
|
||||
"esbuild-plugin-version-injector": "^1.0.2",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
export * as EmbedAssertions from './messages/embed/Assertions.js';
|
||||
export * from './messages/embed/Embed.js';
|
||||
export * from './messages/formatters.js';
|
||||
// TODO: Consider removing this dep in the next major version
|
||||
export * from '@discordjs/formatters';
|
||||
|
||||
export * as ComponentAssertions from './components/Assertions.js';
|
||||
export * from './components/ActionRow.js';
|
||||
|
||||
@@ -94,3 +94,7 @@ const memberPermissionPredicate = s.union(
|
||||
export function validateDefaultMemberPermissions(permissions: unknown) {
|
||||
return memberPermissionPredicate.parse(permissions);
|
||||
}
|
||||
|
||||
export function validateNSFW(value: unknown): asserts value is boolean {
|
||||
booleanPredicate.parse(value);
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ import {
|
||||
validateDMPermission,
|
||||
validateMaxOptionsLength,
|
||||
validateRequiredParameters,
|
||||
validateNSFW,
|
||||
} from './Assertions.js';
|
||||
import { SlashCommandSubcommandBuilder, SlashCommandSubcommandGroupBuilder } from './SlashCommandSubcommands.js';
|
||||
import { SharedNameAndDescription } from './mixins/NameAndDescription.js';
|
||||
@@ -64,6 +65,11 @@ export class SlashCommandBuilder {
|
||||
*/
|
||||
public readonly dm_permission: boolean | undefined = undefined;
|
||||
|
||||
/**
|
||||
* Whether this command is NSFW
|
||||
*/
|
||||
public readonly nsfw: boolean | undefined = undefined;
|
||||
|
||||
/**
|
||||
* Returns the final data that should be sent to Discord.
|
||||
*
|
||||
@@ -134,6 +140,18 @@ export class SlashCommandBuilder {
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets whether this command is NSFW
|
||||
*
|
||||
* @param nsfw - Whether this command is NSFW
|
||||
*/
|
||||
public setNSFW(nsfw = true) {
|
||||
// Assert the value matches the conditions
|
||||
validateNSFW(nsfw);
|
||||
Reflect.set(this, 'nsfw', nsfw);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a new subcommand group to this command
|
||||
*
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
"devDependencies": {
|
||||
"@favware/cliff-jumper": "^1.9.0",
|
||||
"@microsoft/api-extractor": "^7.33.6",
|
||||
"@types/node": "16.18.3",
|
||||
"@types/node": "16.18.4",
|
||||
"@vitest/coverage-c8": "^0.25.3",
|
||||
"cross-env": "^7.0.3",
|
||||
"esbuild-plugin-version-injector": "^1.0.2",
|
||||
|
||||
@@ -48,12 +48,12 @@
|
||||
"@discordjs/rest": "workspace:^",
|
||||
"@discordjs/ws": "workspace:^",
|
||||
"@vladfrangu/async_event_emitter": "^2.1.2",
|
||||
"discord-api-types": "^0.37.20"
|
||||
"discord-api-types": "^0.37.23"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@favware/cliff-jumper": "^1.9.0",
|
||||
"@microsoft/api-extractor": "^7.33.6",
|
||||
"@types/node": "16.18.3",
|
||||
"@types/node": "16.18.4",
|
||||
"@vitest/coverage-c8": "^0.25.3",
|
||||
"cross-env": "^7.0.3",
|
||||
"eslint": "^8.28.0",
|
||||
|
||||
@@ -24,6 +24,7 @@ export class ApplicationCommandsAPI {
|
||||
/**
|
||||
* Fetches all global commands for a application
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/interactions/application-commands#get-global-application-commands}
|
||||
* @param applicationId - The application id to fetch commands for
|
||||
* @param options - The options to use when fetching commands
|
||||
*/
|
||||
@@ -36,6 +37,7 @@ export class ApplicationCommandsAPI {
|
||||
/**
|
||||
* Creates a new global command
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/interactions/application-commands#create-global-application-command}
|
||||
* @param applicationId - The application id to create the command for
|
||||
* @param data - The data to use when creating the command
|
||||
*/
|
||||
@@ -48,6 +50,7 @@ export class ApplicationCommandsAPI {
|
||||
/**
|
||||
* Fetches a global command
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/interactions/application-commands#get-global-application-command}
|
||||
* @param applicationId - The application id to fetch the command from
|
||||
* @param commandId - The command id to fetch
|
||||
*/
|
||||
@@ -60,6 +63,7 @@ export class ApplicationCommandsAPI {
|
||||
/**
|
||||
* Edits a global command
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/interactions/application-commands#edit-global-application-command}
|
||||
* @param applicationId - The application id of the command
|
||||
* @param commandId - The id of the command to edit
|
||||
* @param data - The data to use when editing the command
|
||||
@@ -77,6 +81,7 @@ export class ApplicationCommandsAPI {
|
||||
/**
|
||||
* Deletes a global command
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/interactions/application-commands#delete-global-application-command}
|
||||
* @param applicationId - The application id of the command
|
||||
* @param commandId - The id of the command to delete
|
||||
*/
|
||||
@@ -87,6 +92,7 @@ export class ApplicationCommandsAPI {
|
||||
/**
|
||||
* Overwrites global commands
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/interactions/application-commands#bulk-overwrite-global-application-commands}
|
||||
* @param applicationId - The application id to overwrite commands for
|
||||
* @param data - The data to use when overwriting commands
|
||||
*/
|
||||
@@ -99,6 +105,7 @@ export class ApplicationCommandsAPI {
|
||||
/**
|
||||
* Fetches all commands for a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/interactions/application-commands#get-guild-application-commands}
|
||||
* @param applicationId - The application id to fetch commands for
|
||||
* @param guildId - The guild id to fetch commands for
|
||||
* @param data - The data to use when fetching commands
|
||||
@@ -116,6 +123,7 @@ export class ApplicationCommandsAPI {
|
||||
/**
|
||||
* Creates a new command for a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/interactions/application-commands#create-guild-application-command}
|
||||
* @param applicationId - The application id to create the command for
|
||||
* @param guildId - The guild id to create the command for
|
||||
* @param data - The data to use when creating the command
|
||||
@@ -133,6 +141,7 @@ export class ApplicationCommandsAPI {
|
||||
/**
|
||||
* Fetches a guild command
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/interactions/application-commands#get-guild-application-command}
|
||||
* @param applicationId - The application id to fetch the command from
|
||||
* @param guildId - The guild id to fetch the command from
|
||||
* @param commandId - The command id to fetch
|
||||
@@ -146,6 +155,7 @@ export class ApplicationCommandsAPI {
|
||||
/**
|
||||
* Edits a guild command
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/interactions/application-commands#edit-guild-application-command}
|
||||
* @param applicationId - The application id of the command
|
||||
* @param guildId - The guild id of the command
|
||||
* @param commandId - The command id to edit
|
||||
@@ -165,6 +175,7 @@ export class ApplicationCommandsAPI {
|
||||
/**
|
||||
* Deletes a guild command
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/interactions/application-commands#delete-guild-application-command}
|
||||
* @param applicationId - The application id of the command
|
||||
* @param guildId - The guild id of the command
|
||||
* @param commandId - The id of the command to delete
|
||||
@@ -176,6 +187,7 @@ export class ApplicationCommandsAPI {
|
||||
/**
|
||||
* Bulk overwrites guild commands
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/interactions/application-commands#bulk-overwrite-guild-application-commands}
|
||||
* @param applicationId - The application id to overwrite commands for
|
||||
* @param guildId - The guild id to overwrite commands for
|
||||
* @param data - The data to use when overwriting commands
|
||||
@@ -193,6 +205,7 @@ export class ApplicationCommandsAPI {
|
||||
/**
|
||||
* Fetches the permissions for a guild command
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/interactions/application-commands#get-guild-application-command-permissions}
|
||||
* @param applicationId - The application id to get the permissions for
|
||||
* @param guildId - The guild id of the command
|
||||
* @param commandId - The command id to get the permissions for
|
||||
@@ -206,6 +219,7 @@ export class ApplicationCommandsAPI {
|
||||
/**
|
||||
* Fetches all permissions for all commands in a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/interactions/application-commands#get-application-command-permissions}
|
||||
* @param applicationId - The application id to get the permissions for
|
||||
* @param guildId - The guild id to get the permissions for
|
||||
*/
|
||||
@@ -218,6 +232,7 @@ export class ApplicationCommandsAPI {
|
||||
/**
|
||||
* Edits the permissions for a guild command
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/interactions/application-commands#edit-application-command-permissions}
|
||||
* @param userToken - The token of the user to edit permissions on behalf of
|
||||
* @param applicationId - The application id to edit the permissions for
|
||||
* @param guildId - The guild id to edit the permissions for
|
||||
|
||||
@@ -30,6 +30,7 @@ export class ChannelsAPI {
|
||||
/**
|
||||
* Sends a message in a channel
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/channel#create-message}
|
||||
* @param channelId - The id of the channel to send the message in
|
||||
* @param data - The data to use when sending the message
|
||||
*/
|
||||
@@ -46,6 +47,7 @@ export class ChannelsAPI {
|
||||
/**
|
||||
* Edits a message
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/channel#edit-message}
|
||||
* @param channelId - The id of the channel the message is in
|
||||
* @param messageId - The id of the message to edit
|
||||
* @param data - The data to use when editing the message
|
||||
@@ -64,6 +66,7 @@ export class ChannelsAPI {
|
||||
/**
|
||||
* Fetches the reactions for a message
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/channel#get-reactions}
|
||||
* @param channelId - The id of the channel the message is in
|
||||
* @param messageId - The id of the message to get the reactions for
|
||||
* @param emoji - The emoji to get the reactions for
|
||||
@@ -83,6 +86,7 @@ export class ChannelsAPI {
|
||||
/**
|
||||
* Deletes a reaction for the current user
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/channel#delete-own-reaction}
|
||||
* @param channelId - The id of the channel the message is in
|
||||
* @param messageId - The id of the message to delete the reaction for
|
||||
* @param emoji - The emoji to delete the reaction for
|
||||
@@ -94,6 +98,7 @@ export class ChannelsAPI {
|
||||
/**
|
||||
* Deletes a reaction for a user
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/channel#delete-user-reaction}
|
||||
* @param channelId - The id of the channel the message is in
|
||||
* @param messageId - The id of the message to delete the reaction for
|
||||
* @param emoji - The emoji to delete the reaction for
|
||||
@@ -106,6 +111,7 @@ export class ChannelsAPI {
|
||||
/**
|
||||
* Deletes all reactions for a message
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/channel#delete-all-reactions}
|
||||
* @param channelId - The id of the channel the message is in
|
||||
* @param messageId - The id of the message to delete the reactions for
|
||||
*/
|
||||
@@ -116,6 +122,7 @@ export class ChannelsAPI {
|
||||
/**
|
||||
* Deletes all reactions of an emoji for a message
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/channel#delete-all-reactions-for-emoji}
|
||||
* @param channelId - The id of the channel the message is in
|
||||
* @param messageId - The id of the message to delete the reactions for
|
||||
* @param emoji - The emoji to delete the reactions for
|
||||
@@ -127,6 +134,7 @@ export class ChannelsAPI {
|
||||
/**
|
||||
* Adds a reaction to a message
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/channel#create-reaction}
|
||||
* @param channelId - The id of the channel the message is in
|
||||
* @param messageId - The id of the message to add the reaction to
|
||||
* @param emoji - The emoji to add the reaction with
|
||||
@@ -138,6 +146,7 @@ export class ChannelsAPI {
|
||||
/**
|
||||
* Fetches a channel
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/channel#get-channel}
|
||||
* @param channelId - The id of the channel
|
||||
*/
|
||||
public async get(channelId: Snowflake) {
|
||||
@@ -147,6 +156,7 @@ export class ChannelsAPI {
|
||||
/**
|
||||
* Edits a channel
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/channel#modify-channel}
|
||||
* @param channelId - The id of the channel to edit
|
||||
* @param data - The new channel data
|
||||
*/
|
||||
@@ -157,6 +167,7 @@ export class ChannelsAPI {
|
||||
/**
|
||||
* Deletes a channel
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/channel#deleteclose-channel}
|
||||
* @param channelId - The id of the channel to delete
|
||||
*/
|
||||
public async delete(channelId: Snowflake) {
|
||||
@@ -166,6 +177,7 @@ export class ChannelsAPI {
|
||||
/**
|
||||
* Fetches the messages of a channel
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/channel#get-channel-messages}
|
||||
* @param channelId - The id of the channel to fetch messages from
|
||||
* @param options - The options to use when fetching messages
|
||||
*/
|
||||
@@ -178,6 +190,7 @@ export class ChannelsAPI {
|
||||
/**
|
||||
* Shows a typing indicator in a channel
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/channel#trigger-typing-indicator}
|
||||
* @param channelId - The id of the channel to show the typing indicator in
|
||||
*/
|
||||
public async showTyping(channelId: Snowflake) {
|
||||
@@ -187,6 +200,7 @@ export class ChannelsAPI {
|
||||
/**
|
||||
* Fetches the pinned messages of a channel
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/channel#get-pinned-messages}
|
||||
* @param channelId - The id of the channel to fetch pinned messages from
|
||||
*/
|
||||
public async getPins(channelId: Snowflake) {
|
||||
@@ -196,6 +210,7 @@ export class ChannelsAPI {
|
||||
/**
|
||||
* Pins a message in a channel
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/channel#pin-message}
|
||||
* @param channelId - The id of the channel to pin the message in
|
||||
* @param messageId - The id of the message to pin
|
||||
* @param reason - The reason for pinning the message
|
||||
@@ -207,6 +222,7 @@ export class ChannelsAPI {
|
||||
/**
|
||||
* Deletes a message
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/channel#delete-message}
|
||||
* @param channelId - The id of the channel the message is in
|
||||
* @param messageId - The id of the message to delete
|
||||
* @param reason - The reason for deleting the message
|
||||
@@ -218,6 +234,7 @@ export class ChannelsAPI {
|
||||
/**
|
||||
* Bulk deletes messages
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/channel#bulk-delete-messages}
|
||||
* @param channelId - The id of the channel the messages are in
|
||||
* @param messageIds - The ids of the messages to delete
|
||||
*/
|
||||
@@ -228,6 +245,7 @@ export class ChannelsAPI {
|
||||
/**
|
||||
* Fetches a message
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/channel#get-channel-message}
|
||||
* @param channelId - The id of the channel the message is in
|
||||
* @param messageId - The id of the message to fetch
|
||||
*/
|
||||
@@ -238,6 +256,7 @@ export class ChannelsAPI {
|
||||
/**
|
||||
* Crossposts a message
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/channel#crosspost-message}
|
||||
* @param channelId - The id of the channel the message is in
|
||||
* @param messageId - The id of the message to crosspost
|
||||
*/
|
||||
@@ -250,6 +269,7 @@ export class ChannelsAPI {
|
||||
/**
|
||||
* Unpins a message in a channel
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/channel#unpin-message}
|
||||
* @param channelId - The id of the channel to unpin the message in
|
||||
* @param messageId - The id of the message to unpin
|
||||
* @param reason - The reason for unpinning the message
|
||||
@@ -261,6 +281,7 @@ export class ChannelsAPI {
|
||||
/**
|
||||
* Follows an announcement channel
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/channel#follow-announcement-channel}
|
||||
* @param channelId - The id of the announcement channel to follow
|
||||
* @param webhookChannelId - The id of the webhook channel to follow the announcements in
|
||||
*/
|
||||
@@ -273,6 +294,7 @@ export class ChannelsAPI {
|
||||
/**
|
||||
* Creates a new invite for a channel
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/channel#create-channel-invite}
|
||||
* @param channelId - The id of the channel to create an invite for
|
||||
* @param data - The data to use when creating the invite
|
||||
*/
|
||||
@@ -286,6 +308,7 @@ export class ChannelsAPI {
|
||||
/**
|
||||
* Fetches the invites of a channel
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/channel#get-channel-invites}
|
||||
* @param channelId - The id of the channel to fetch invites from
|
||||
*/
|
||||
public async getInvites(channelId: Snowflake) {
|
||||
@@ -295,6 +318,8 @@ export class ChannelsAPI {
|
||||
/**
|
||||
* Fetches the archived threads of a channel
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/channel#list-public-archived-threads}
|
||||
* @see {@link https://discord.com/developers/docs/resources/channel#list-private-archived-threads}
|
||||
* @param channelId - The id of the channel to fetch archived threads from
|
||||
* @param archivedStatus - The archived status of the threads to fetch
|
||||
* @param options - The options to use when fetching archived threads
|
||||
@@ -312,6 +337,7 @@ export class ChannelsAPI {
|
||||
/**
|
||||
* Fetches the private joined archived threads of a channel
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/channel#list-joined-private-archived-threads}
|
||||
* @param channelId - The id of the channel to fetch joined archived threads from
|
||||
* @param options - The options to use when fetching joined archived threads
|
||||
*/
|
||||
|
||||
@@ -91,6 +91,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Fetches a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild#get-guild}
|
||||
* @param guildId - The id of the guild
|
||||
*/
|
||||
public async get(guildId: string) {
|
||||
@@ -100,6 +101,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Fetches a guild preview
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild#get-guild-preview}
|
||||
* @param guildId - The id of the guild to fetch the preview from
|
||||
*/
|
||||
public async getPreview(guildId: Snowflake) {
|
||||
@@ -109,6 +111,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Creates a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild#create-guild}
|
||||
* @param data - The guild to create
|
||||
*/
|
||||
public async create(data: RESTPostAPIGuildsJSONBody) {
|
||||
@@ -118,6 +121,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Edits a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild#modify-guild}
|
||||
* @param guildId - The id of the guild to edit
|
||||
* @param data - The new guild data
|
||||
* @param reason - The reason for editing this guild
|
||||
@@ -129,6 +133,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Deletes a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild#delete-guild}
|
||||
* @param guildId - The id of the guild to delete
|
||||
* @param reason - The reason for deleting this guild
|
||||
*/
|
||||
@@ -139,6 +144,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Fetches all the members of a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild#list-guild-members}
|
||||
* @param guildId - The id of the guild
|
||||
* @param options - The options to use when fetching the guild members
|
||||
*/
|
||||
@@ -151,6 +157,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Fetches a guild's channels
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild#get-guild-channels}
|
||||
* @param guildId - The id of the guild to fetch the channels from
|
||||
*/
|
||||
public async getChannels(guildId: Snowflake) {
|
||||
@@ -160,6 +167,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Creates a guild channel
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild#create-guild-channel}
|
||||
* @param guildId - The id of the guild to create the channel in
|
||||
* @param data - The data to create the new channel
|
||||
* @param reason - The reason for creating this channel
|
||||
@@ -174,6 +182,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Edits a guild channel's positions
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild#modify-guild-channel-positions}
|
||||
* @param guildId - The id of the guild to edit the channel positions from
|
||||
* @param data - The data to edit the channel positions with
|
||||
* @param reason - The reason for editing the channel positions
|
||||
@@ -189,6 +198,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Fetches the active threads in a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild#list-active-guild-threads}
|
||||
* @param guildId - The id of the guild to fetch the active threads from
|
||||
*/
|
||||
public async getActiveThreads(guildId: Snowflake) {
|
||||
@@ -198,6 +208,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Fetches a guild member ban
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild#get-guild-bans}
|
||||
* @param guildId - The id of the guild to fetch the ban from
|
||||
*/
|
||||
public async getMemberBans(guildId: Snowflake) {
|
||||
@@ -207,6 +218,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Bans a user from a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild#create-guild-ban}
|
||||
* @param guildId - The id of the guild to ban the member in
|
||||
* @param userId - The id of the user to ban
|
||||
* @param options - Options for banning the user
|
||||
@@ -224,6 +236,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Unbans a user from a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild#remove-guild-ban}
|
||||
* @param guildId - The id of the guild to unban the member in
|
||||
* @param userId - The id of the user to unban
|
||||
* @param reason - The reason for unbanning the user
|
||||
@@ -235,6 +248,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Gets all the roles in a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild#get-guild-roles}
|
||||
* @param guildId - The id of the guild to fetch the roles from
|
||||
*/
|
||||
public async getRoles(guildId: Snowflake) {
|
||||
@@ -244,6 +258,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Creates a guild role
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild#create-guild-role}
|
||||
* @param guildId - The id of the guild to create the role in
|
||||
* @param data - The data to create the role with
|
||||
* @param reason - The reason for creating the role
|
||||
@@ -255,6 +270,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Sets role positions in a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild#modify-guild-role-positions}
|
||||
* @param guildId - The id of the guild to set role positions for
|
||||
* @param data - The data for setting a role position
|
||||
* @param reason - The reason for setting the role position
|
||||
@@ -269,6 +285,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Edits a guild role
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild#modify-guild-role}
|
||||
* @param guildId - The id of the guild to edit the role in
|
||||
* @param roleId - The id of the role to edit
|
||||
* @param data - data for editing the role
|
||||
@@ -284,6 +301,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Deletes a guild role
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild#delete-guild-role}
|
||||
* @param guildId - The id of the guild to delete the role in
|
||||
* @param roleId - The id of the role to delete
|
||||
* @param reason - The reason for deleting the role
|
||||
@@ -295,6 +313,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Edits the multi-factor-authentication (MFA) level of a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild#modify-guild-mfa-level}
|
||||
* @param guildId - The id of the guild to edit the MFA level for
|
||||
* @param level - The new MFA level
|
||||
* @param reason - The reason for editing the MFA level
|
||||
@@ -309,6 +328,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Fetch the number of members that can be pruned from a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild#get-guild-prune-count}
|
||||
* @param guildId - The id of the guild to fetch the number of pruned members from
|
||||
* @param options - The options for fetching the number of pruned members
|
||||
*/
|
||||
@@ -321,6 +341,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Prunes members in a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild#begin-guild-prune}
|
||||
* @param guildId - The id of the guild to prune members in
|
||||
* @param options - The options for pruning members
|
||||
* @param reason - The reason for pruning members
|
||||
@@ -335,6 +356,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Fetches voice regions for a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild#get-guild-voice-regions}
|
||||
* @param guildId - The id of the guild to fetch the voice regions from
|
||||
*/
|
||||
public async getVoiceRegions(guildId: Snowflake) {
|
||||
@@ -344,6 +366,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Fetches the invites for a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild#get-guild-invites}
|
||||
* @param guildId - The id of the guild to fetch the invites from
|
||||
*/
|
||||
public async getInvites(guildId: Snowflake) {
|
||||
@@ -353,6 +376,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Fetches the integrations for a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild#get-guild-integrations}
|
||||
* @param guildId - The id of the guild to fetch the integrations from
|
||||
*/
|
||||
public async getIntegrations(guildId: Snowflake) {
|
||||
@@ -362,6 +386,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Deletes an integration from a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild#delete-guild-integration}
|
||||
* @param guildId - The id of the guild to delete the integration from
|
||||
* @param integrationId - The id of the integration to delete
|
||||
* @param reason - The reason for deleting the integration
|
||||
@@ -373,6 +398,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Fetches the widget settings for a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild#get-guild-widget-settings}
|
||||
* @param guildId - The id of the guild to fetch the widget settings from
|
||||
*/
|
||||
public async getWidgetSettings(guildId: Snowflake) {
|
||||
@@ -382,6 +408,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Edits the widget settings for a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild#modify-guild-widget}
|
||||
* @param guildId - The id of the guild to edit the widget settings from
|
||||
* @param data - The new widget settings data
|
||||
* @param reason - The reason for editing the widget settings
|
||||
@@ -396,6 +423,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Fetches the widget for a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild#get-guild-widget}
|
||||
* @param guildId - The id of the guild to fetch the widget from
|
||||
*/
|
||||
public async getWidget(guildId: Snowflake) {
|
||||
@@ -405,6 +433,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Fetches the vanity url for a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild#get-guild-vanity-url}
|
||||
* @param guildId - The id of the guild to fetch the vanity url from
|
||||
*/
|
||||
public async getVanityURL(guildId: Snowflake) {
|
||||
@@ -414,6 +443,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Fetches the widget image for a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild#get-guild-widget-image}
|
||||
* @param guildId - The id of the guild to fetch the widget image from
|
||||
* @param style - The style of the widget image
|
||||
*/
|
||||
@@ -426,6 +456,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Fetches the welcome screen for a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild#get-guild-welcome-screen}
|
||||
* @param guildId - The id of the guild to fetch the welcome screen from
|
||||
*/
|
||||
public async getWelcomeScreen(guildId: Snowflake) {
|
||||
@@ -435,6 +466,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Edits the welcome screen for a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild#modify-guild-welcome-screen}
|
||||
* @param guildId - The id of the guild to edit the welcome screen for
|
||||
* @param data - The new welcome screen data
|
||||
* @param reason - The reason for editing the welcome screen
|
||||
@@ -449,6 +481,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Edits a user's voice state in a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild#modify-user-voice-state}
|
||||
* @param guildId - The id of the guild to edit the current user's voice state in
|
||||
* @param userId - The id of the user to edit the voice state for
|
||||
* @param data - The data for editing the voice state
|
||||
@@ -466,6 +499,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Fetches all emojis for a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/emoji#list-guild-emojis}
|
||||
* @param guildId - The id of the guild to fetch the emojis from
|
||||
*/
|
||||
public async getEmojis(guildId: Snowflake) {
|
||||
@@ -475,6 +509,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Fetches an emoji for a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/emoji#get-guild-emoji}
|
||||
* @param guildId - The id of the guild to fetch the emoji from
|
||||
* @param emojiId - The id of the emoji to fetch
|
||||
*/
|
||||
@@ -485,6 +520,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Creates a new emoji for a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/emoji#create-guild-emoji}
|
||||
* @param guildId - The id of the guild to create the emoji from
|
||||
* @param data - The data for creating the emoji
|
||||
* @param reason - The reason for creating the emoji
|
||||
@@ -499,6 +535,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Edits an emoji for a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/emoji#modify-guild-emoji}
|
||||
* @param guildId - The id of the guild to edit the emoji from
|
||||
* @param emojiId - The id of the emoji to edit
|
||||
* @param data - The data for editing the emoji
|
||||
@@ -519,6 +556,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Deletes an emoji for a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/emoji#delete-guild-emoji}
|
||||
* @param guildId - The id of the guild to delete the emoji from
|
||||
* @param emojiId - The id of the emoji to delete
|
||||
* @param reason - The reason for deleting the emoji
|
||||
@@ -530,6 +568,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Fetches all scheduled events for a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild-scheduled-event#list-scheduled-events-for-guild}
|
||||
* @param guildId - The id of the guild to fetch the scheduled events from
|
||||
* @param options - The options for fetching the scheduled events
|
||||
*/
|
||||
@@ -542,6 +581,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Creates a new scheduled event for a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild-scheduled-event#create-guild-scheduled-event}
|
||||
* @param guildId - The id of the guild to create the scheduled event from
|
||||
* @param data - The data to create the event with
|
||||
* @param reason - The reason for creating the scheduled event
|
||||
@@ -556,6 +596,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Fetches a scheduled event for a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild-scheduled-event#get-guild-scheduled-event}
|
||||
* @param guildId - The id of the guild to fetch the scheduled event from
|
||||
* @param eventId - The id of the scheduled event to fetch
|
||||
* @param options - The options for fetching the scheduled event
|
||||
@@ -573,6 +614,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Edits a scheduled event for a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild-scheduled-event#modify-guild-scheduled-event}
|
||||
* @param guildId - The id of the guild to edit the scheduled event from
|
||||
* @param eventId - The id of the scheduled event to edit
|
||||
* @param data - The new event data
|
||||
@@ -593,6 +635,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Deletes a scheduled event for a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild-scheduled-event#delete-guild-scheduled-event}
|
||||
* @param guildId - The id of the guild to delete the scheduled event from
|
||||
* @param eventId - The id of the scheduled event to delete
|
||||
* @param reason - The reason for deleting the scheduled event
|
||||
@@ -604,6 +647,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Gets all users that are interested in a scheduled event
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild-scheduled-event#get-guild-scheduled-event-users}
|
||||
* @param guildId - The id of the guild to fetch the scheduled event users from
|
||||
* @param eventId - The id of the scheduled event to fetch the users for
|
||||
* @param options - The options for fetching the scheduled event users
|
||||
@@ -621,6 +665,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Fetches all the templates for a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild-template#get-guild-templates}
|
||||
* @param guildId - The id of the guild to fetch the templates from
|
||||
*/
|
||||
public async getTemplates(guildId: Snowflake) {
|
||||
@@ -630,6 +675,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Syncs a template for a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild-template#sync-guild-template}
|
||||
* @param guildId - The id of the guild to sync the template from
|
||||
* @param templateCode - The code of the template to sync
|
||||
*/
|
||||
@@ -640,6 +686,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Edits a template for a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild-template#modify-guild-template}
|
||||
* @param guildId - The id of the guild to edit the template from
|
||||
* @param templateCode - The code of the template to edit
|
||||
* @param data - The data for editing the template
|
||||
@@ -653,6 +700,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Deletes a template for a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild-template#delete-guild-template}
|
||||
* @param guildId - The id of the guild to delete the template from
|
||||
* @param templateCode - The code of the template to delete
|
||||
*/
|
||||
@@ -663,6 +711,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Fetches all the stickers for a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/sticker#list-guild-stickers}
|
||||
* @param guildId - The id of the guild to fetch the stickers from
|
||||
*/
|
||||
public async getStickers(guildId: Snowflake) {
|
||||
@@ -672,6 +721,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Fetches a sticker for a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/sticker#get-guild-sticker}
|
||||
* @param guildId - The id of the guild to fetch the sticker from
|
||||
* @param stickerId - The id of the sticker to fetch
|
||||
*/
|
||||
@@ -682,6 +732,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Creates a sticker for a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/sticker#create-guild-sticker}
|
||||
* @param guildId - The id of the guild to create the sticker for
|
||||
* @param data - The data for creating the sticker
|
||||
* @param reason - The reason for creating the sticker
|
||||
@@ -704,6 +755,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Edits a sticker for a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/sticker#modify-guild-sticker}
|
||||
* @param guildId - The id of the guild to edit the sticker from
|
||||
* @param stickerId - The id of the sticker to edit
|
||||
* @param data - The data for editing the sticker
|
||||
@@ -724,6 +776,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Deletes a sticker for a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/sticker#delete-guild-sticker}
|
||||
* @param guildId - The id of the guild to delete the sticker from
|
||||
* @param stickerId - The id of the sticker to delete
|
||||
* @param reason - The reason for deleting the sticker
|
||||
@@ -735,6 +788,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Fetches the audit logs for a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/audit-log#get-guild-audit-log}
|
||||
* @param guildId - The id of the guild to fetch the audit logs from
|
||||
* @param options - The options for fetching the audit logs
|
||||
*/
|
||||
@@ -747,6 +801,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Fetches all auto moderation rules for a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/auto-moderation#list-auto-moderation-rules-for-guild}
|
||||
* @param guildId - The id of the guild to fetch the auto moderation rules from
|
||||
*/
|
||||
public async getAutoModerationRules(guildId: Snowflake) {
|
||||
@@ -756,6 +811,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Fetches an auto moderation rule for a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/auto-moderation#get-auto-moderation-rule}
|
||||
* @param guildId - The id of the guild to fetch the auto moderation rule from
|
||||
* @param ruleId - The id of the auto moderation rule to fetch
|
||||
*/
|
||||
@@ -768,6 +824,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Creates a new auto moderation rule for a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/auto-moderation#create-auto-moderation-rule}
|
||||
* @param guildId - The id of the guild to create the auto moderation rule from
|
||||
* @param data - The data for creating the auto moderation rule
|
||||
*/
|
||||
@@ -785,6 +842,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Edits an auto moderation rule for a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/auto-moderation#modify-auto-moderation-rule}
|
||||
* @param guildId - The id of the guild to edit the auto moderation rule from
|
||||
* @param ruleId - The id of the auto moderation rule to edit
|
||||
* @param data - The data for editing the auto moderation rule
|
||||
@@ -805,6 +863,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Deletes an auto moderation rule for a guild
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/auto-moderation#delete-auto-moderation-rule}
|
||||
* @param guildId - The id of the guild to delete the auto moderation rule from
|
||||
* @param ruleId - The id of the auto moderation rule to delete
|
||||
* @param reason - The reason for deleting the auto moderation rule
|
||||
@@ -816,6 +875,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Fetches a guild member
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild#get-guild-member}
|
||||
* @param guildId - The id of the guild
|
||||
* @param userId - The id of the user
|
||||
*/
|
||||
@@ -826,6 +886,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Searches for guild members
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild#search-guild-members}
|
||||
* @param guildId - The id of the guild to search in
|
||||
* @param query - The query to search for
|
||||
* @param limit - The maximum number of members to return
|
||||
@@ -839,6 +900,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Edits a guild member
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild#modify-guild-member}
|
||||
* @param guildId - The id of the guild
|
||||
* @param userId - The id of the user
|
||||
* @param data - The data to use when editing the guild member
|
||||
@@ -859,6 +921,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Adds a role to a guild member
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild#add-guild-member-role}
|
||||
* @param guildId - The id of the guild
|
||||
* @param userId - The id of the user
|
||||
* @param roleId - The id of the role
|
||||
@@ -871,6 +934,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Removes a role from a guild member
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild#remove-guild-member-role}
|
||||
* @param guildId - The id of the guild
|
||||
* @param userId - The id of the user
|
||||
* @param roleId - The id of the role
|
||||
@@ -883,6 +947,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Fetches a guild template
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild-template#get-guild-template}
|
||||
* @param templateCode - The code of the template
|
||||
*/
|
||||
public async getTemplate(templateCode: string) {
|
||||
@@ -892,6 +957,7 @@ export class GuildsAPI {
|
||||
/**
|
||||
* Creates a new template
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild-template#create-guild-template}
|
||||
* @param templateCode - The code of the template
|
||||
* @param data - The data to use when creating the template
|
||||
*/
|
||||
|
||||
@@ -16,6 +16,7 @@ export class InteractionsAPI {
|
||||
/**
|
||||
* Replies to an interaction
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}
|
||||
* @param interactionId - The id of the interaction
|
||||
* @param interactionToken - The token of the interaction
|
||||
* @param data - The data to use when replying
|
||||
@@ -37,6 +38,7 @@ export class InteractionsAPI {
|
||||
/**
|
||||
* Defers the reply to an interaction
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}
|
||||
* @param interactionId - The id of the interaction
|
||||
* @param interactionToken - The token of the interaction
|
||||
*/
|
||||
@@ -51,6 +53,7 @@ export class InteractionsAPI {
|
||||
/**
|
||||
* Defers an update from a message component interaction
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}
|
||||
* @param interactionId - The id of the interaction
|
||||
* @param interactionToken - The token of the interaction
|
||||
*/
|
||||
@@ -65,6 +68,7 @@ export class InteractionsAPI {
|
||||
/**
|
||||
* Reply to a deferred interaction
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-followup-message}
|
||||
* @param applicationId - The application id of the interaction
|
||||
* @param interactionToken - The token of the interaction
|
||||
* @param data - The data to use when replying
|
||||
@@ -80,6 +84,8 @@ export class InteractionsAPI {
|
||||
/**
|
||||
* Edits the initial reply to an interaction
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#edit-original-interaction-response}
|
||||
* @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#edit-followup-message}
|
||||
* @param applicationId - The application id of the interaction
|
||||
* @param interactionToken - The token of the interaction
|
||||
* @param data - The data to use when editing the reply
|
||||
@@ -89,7 +95,7 @@ export class InteractionsAPI {
|
||||
applicationId: Snowflake,
|
||||
interactionToken: string,
|
||||
data: APIInteractionResponseCallbackData & { files?: RawFile[] },
|
||||
messageId?: string,
|
||||
messageId?: Snowflake | '@original',
|
||||
) {
|
||||
return this.webhooks.editMessage(applicationId, interactionToken, messageId ?? '@original', data);
|
||||
}
|
||||
@@ -97,6 +103,7 @@ export class InteractionsAPI {
|
||||
/**
|
||||
* Fetches the initial reply to an interaction
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#get-original-interaction-response}
|
||||
* @param applicationId - The application id of the interaction
|
||||
* @param interactionToken - The token of the interaction
|
||||
*/
|
||||
@@ -111,16 +118,20 @@ export class InteractionsAPI {
|
||||
/**
|
||||
* Deletes the initial reply to an interaction
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#delete-original-interaction-response}
|
||||
* @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#delete-followup-message}
|
||||
* @param applicationId - The application id of the interaction
|
||||
* @param interactionToken - The token of the interaction
|
||||
* @param messageId - The id of the message to delete. If omitted, the original reply will be deleted
|
||||
*/
|
||||
public async deleteReply(applicationId: Snowflake, interactionToken: string) {
|
||||
await this.webhooks.deleteMessage(applicationId, interactionToken, '@original');
|
||||
public async deleteReply(applicationId: Snowflake, interactionToken: string, messageId?: Snowflake | '@original') {
|
||||
await this.webhooks.deleteMessage(applicationId, interactionToken, messageId ?? '@original');
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the the message the component interaction was triggered on
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}
|
||||
* @param interactionId - The id of the interaction
|
||||
* @param interactionToken - The token of the interaction
|
||||
* @param data - The data to use when updating the interaction
|
||||
@@ -142,6 +153,7 @@ export class InteractionsAPI {
|
||||
/**
|
||||
* Sends an autocomplete response to an interaction
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}
|
||||
* @param interactionId - The id of the interaction
|
||||
* @param interactionToken - The token of the interaction
|
||||
* @param data - Data for the autocomplete response
|
||||
@@ -162,6 +174,7 @@ export class InteractionsAPI {
|
||||
/**
|
||||
* Sends a modal response to an interaction
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}
|
||||
* @param interactionId - The id of the interaction
|
||||
* @param interactionToken - The token of the interaction
|
||||
* @param data - The modal to send
|
||||
|
||||
@@ -7,6 +7,7 @@ export class InvitesAPI {
|
||||
/**
|
||||
* Fetches an invite
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/invite#get-invite}
|
||||
* @param code - The invite code
|
||||
*/
|
||||
public async get(code: string, options: RESTGetAPIInviteQuery = {}) {
|
||||
@@ -18,6 +19,7 @@ export class InvitesAPI {
|
||||
/**
|
||||
* Deletes an invite
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/invite#delete-invite}
|
||||
* @param code - The invite code
|
||||
* @param reason - The reason for deleting the invite
|
||||
*/
|
||||
|
||||
40
packages/core/src/api/roleConnections.ts
Normal file
40
packages/core/src/api/roleConnections.ts
Normal file
@@ -0,0 +1,40 @@
|
||||
import type { REST } from '@discordjs/rest';
|
||||
import {
|
||||
Routes,
|
||||
type RESTGetAPIApplicationRoleConnectionMetadataResult,
|
||||
type RESTPutAPIApplicationRoleConnectionMetadataResult,
|
||||
type RESTPutAPIApplicationCommandPermissionsJSONBody,
|
||||
type Snowflake,
|
||||
} from 'discord-api-types/v10';
|
||||
|
||||
export class RoleConnectionsAPI {
|
||||
public constructor(private readonly rest: REST) {}
|
||||
|
||||
/**
|
||||
* Gets the role connection metadata records for the application
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/application-role-connection-metadata#get-application-role-connection-metadata-records}
|
||||
* @param applicationId - The id of the application to get role connection metadata records for
|
||||
*/
|
||||
public async getMetadataRecords(applicationId: Snowflake) {
|
||||
return this.rest.get(
|
||||
Routes.applicationRoleConnectionMetadata(applicationId),
|
||||
) as Promise<RESTGetAPIApplicationRoleConnectionMetadataResult>;
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the role connection metadata records for the application
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/application-role-connection-metadata#update-application-role-connection-metadata-records}
|
||||
* @param applicationId - The id of the application to update role connection metadata records for
|
||||
* @param options - The new role connection metadata records
|
||||
*/
|
||||
public async updateMetadataRecords(
|
||||
applicationId: Snowflake,
|
||||
options: RESTPutAPIApplicationCommandPermissionsJSONBody,
|
||||
) {
|
||||
return this.rest.put(Routes.applicationRoleConnectionMetadata(applicationId), {
|
||||
body: options,
|
||||
}) as Promise<RESTPutAPIApplicationRoleConnectionMetadataResult>;
|
||||
}
|
||||
}
|
||||
@@ -11,6 +11,8 @@ export class StickersAPI {
|
||||
|
||||
/**
|
||||
* Fetches all of the nitro sticker packs
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/sticker#list-nitro-sticker-packs}
|
||||
*/
|
||||
public async getNitroStickers() {
|
||||
return this.rest.get(Routes.nitroStickerPacks()) as Promise<RESTGetNitroStickerPacksResult>;
|
||||
@@ -19,6 +21,7 @@ export class StickersAPI {
|
||||
/**
|
||||
* Fetches a sticker
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/sticker#get-sticker}
|
||||
* @param stickerId - The id of the sticker
|
||||
*/
|
||||
public async get(stickerId: Snowflake) {
|
||||
|
||||
@@ -24,16 +24,18 @@ export class ThreadsAPI {
|
||||
/**
|
||||
* Fetches a thread
|
||||
*
|
||||
* @param channelId - The id of the channel to fetch the thread from
|
||||
* @see {@link https://discord.com/developers/docs/resources/channel#get-channel}
|
||||
* @param threadId - The id of the thread
|
||||
*/
|
||||
public async get(channelId: Snowflake, threadId: Snowflake) {
|
||||
return this.rest.get(Routes.threads(channelId, threadId)) as Promise<APIThreadChannel>;
|
||||
public async get(threadId: Snowflake) {
|
||||
return this.rest.get(Routes.channel(threadId)) as Promise<APIThreadChannel>;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new thread
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/channel#start-thread-from-message}
|
||||
* @see {@link https://discord.com/developers/docs/resources/channel#start-thread-without-message}
|
||||
* @param channelId - The id of the channel to start the thread in
|
||||
* @param data - The data to use when starting the thread
|
||||
*/
|
||||
@@ -44,6 +46,7 @@ export class ThreadsAPI {
|
||||
/**
|
||||
* Creates a new forum post
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/channel#start-thread-in-forum-channel}
|
||||
* @param channelId - The id of the forum channel to start the thread in
|
||||
* @param data - The data to use when starting the thread
|
||||
*/
|
||||
@@ -61,6 +64,7 @@ export class ThreadsAPI {
|
||||
/**
|
||||
* Adds the current user to a thread
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/channel#join-thread}
|
||||
* @param threadId - The id of the thread to join
|
||||
*/
|
||||
public async join(threadId: Snowflake) {
|
||||
@@ -70,6 +74,7 @@ export class ThreadsAPI {
|
||||
/**
|
||||
* Adds a member to a thread
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/channel#add-thread-member}
|
||||
* @param threadId - The id of the thread to add the member to
|
||||
* @param userId - The id of the user to add to the thread
|
||||
*/
|
||||
@@ -80,6 +85,7 @@ export class ThreadsAPI {
|
||||
/**
|
||||
* Removes the current user from a thread
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/channel#leave-thread}
|
||||
* @param threadId - The id of the thread to leave
|
||||
*/
|
||||
public async leave(threadId: Snowflake) {
|
||||
@@ -89,6 +95,7 @@ export class ThreadsAPI {
|
||||
/**
|
||||
* Removes a member from a thread
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/channel#remove-thread-member}
|
||||
* @param threadId - The id of the thread to remove the member from
|
||||
* @param userId - The id of the user to remove from the thread
|
||||
*/
|
||||
@@ -99,6 +106,7 @@ export class ThreadsAPI {
|
||||
/**
|
||||
* Fetches a member of a thread
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/channel#get-thread-member}
|
||||
* @param threadId - The id of the thread to fetch the member from
|
||||
* @param userId - The id of the user
|
||||
*/
|
||||
@@ -109,6 +117,7 @@ export class ThreadsAPI {
|
||||
/**
|
||||
* Fetches all members of a thread
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/channel#list-thread-members}
|
||||
* @param threadId - The id of the thread to fetch the members from
|
||||
*/
|
||||
public async getAllMembers(threadId: Snowflake) {
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import { makeURLSearchParams, type REST } from '@discordjs/rest';
|
||||
import {
|
||||
Routes,
|
||||
type RESTGetAPICurrentUserApplicationRoleConnectionResult,
|
||||
type RESTGetAPICurrentUserConnectionsResult,
|
||||
type RESTGetAPICurrentUserGuildsQuery,
|
||||
type RESTGetAPICurrentUserGuildsResult,
|
||||
type RESTGetAPICurrentUserResult,
|
||||
@@ -13,6 +15,8 @@ import {
|
||||
type RESTPatchAPIGuildVoiceStateCurrentMemberJSONBody,
|
||||
type RESTPatchAPIGuildVoiceStateCurrentMemberResult,
|
||||
type RESTPostAPICurrentUserCreateDMChannelResult,
|
||||
type RESTPutAPICurrentUserApplicationRoleConnectionJSONBody,
|
||||
type RESTPutAPICurrentUserApplicationRoleConnectionResult,
|
||||
type Snowflake,
|
||||
} from 'discord-api-types/v10';
|
||||
|
||||
@@ -22,6 +26,7 @@ export class UsersAPI {
|
||||
/**
|
||||
* Fetches a user by their id
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/user#get-user}
|
||||
* @param userId - The id of the user to fetch
|
||||
*/
|
||||
public async get(userId: Snowflake) {
|
||||
@@ -30,6 +35,8 @@ export class UsersAPI {
|
||||
|
||||
/**
|
||||
* Returns the user object of the requester's account
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/user#get-current-user}
|
||||
*/
|
||||
public async getCurrent() {
|
||||
return this.rest.get(Routes.user('@me')) as Promise<RESTGetAPICurrentUserResult>;
|
||||
@@ -38,6 +45,7 @@ export class UsersAPI {
|
||||
/**
|
||||
* Returns a list of partial guild objects the current user is a member of
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/user#get-current-user-guilds}
|
||||
* @param options - The options to use when fetching the current user's guilds
|
||||
*/
|
||||
public async getGuilds(options: RESTGetAPICurrentUserGuildsQuery = {}) {
|
||||
@@ -49,6 +57,7 @@ export class UsersAPI {
|
||||
/**
|
||||
* Leaves the guild with the given id
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/user#leave-guild}
|
||||
* @param guildId - The id of the guild
|
||||
*/
|
||||
public async leaveGuild(guildId: Snowflake) {
|
||||
@@ -58,6 +67,7 @@ export class UsersAPI {
|
||||
/**
|
||||
* Edits the current user
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/user#modify-current-user}
|
||||
* @param user - The new data for the current user
|
||||
*/
|
||||
public async edit(user: RESTPatchAPICurrentUserJSONBody) {
|
||||
@@ -67,6 +77,7 @@ export class UsersAPI {
|
||||
/**
|
||||
* Fetches the guild member for the current user
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/user#get-current-user-guild-member}
|
||||
* @param guildId - The id of the guild
|
||||
*/
|
||||
public async getGuildMember(guildId: Snowflake) {
|
||||
@@ -76,6 +87,7 @@ export class UsersAPI {
|
||||
/**
|
||||
* Edits the guild member for the current user
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild#modify-current-member}
|
||||
* @param guildId - The id of the guild
|
||||
* @param member - The new data for the guild member
|
||||
* @param reason - The reason for editing this guild member
|
||||
@@ -90,6 +102,7 @@ export class UsersAPI {
|
||||
/**
|
||||
* Sets the voice state for the current user
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/guild#modify-current-user-voice-state}
|
||||
* @param guildId - The id of the guild
|
||||
* @param options - The options to use when setting the voice state
|
||||
*/
|
||||
@@ -102,6 +115,7 @@ export class UsersAPI {
|
||||
/**
|
||||
* Opens a new DM channel with a user
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/user#create-dm}
|
||||
* @param userId - The id of the user to open a DM channel with
|
||||
*/
|
||||
public async createDM(userId: Snowflake) {
|
||||
@@ -109,4 +123,41 @@ export class UsersAPI {
|
||||
body: { recipient_id: userId },
|
||||
}) as Promise<RESTPostAPICurrentUserCreateDMChannelResult>;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the current user's connections
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/user#get-user-connections}
|
||||
*/
|
||||
public async getConnections() {
|
||||
return this.rest.get(Routes.userConnections()) as Promise<RESTGetAPICurrentUserConnectionsResult>;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the current user's active application role connection
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/user#get-user-application-role-connection}
|
||||
* @param applicationId - The id of the application
|
||||
*/
|
||||
public async getApplicationRoleConnection(applicationId: Snowflake) {
|
||||
return this.rest.get(
|
||||
Routes.userApplicationRoleConnection(applicationId),
|
||||
) as Promise<RESTGetAPICurrentUserApplicationRoleConnectionResult>;
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the current user's application role connection
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/user#update-user-application-role-connection}
|
||||
* @param applicationId - The id of the application
|
||||
* @param options - The options to use when updating the application role connection
|
||||
*/
|
||||
public async updateApplicationRoleConnection(
|
||||
applicationId: Snowflake,
|
||||
options: RESTPutAPICurrentUserApplicationRoleConnectionJSONBody,
|
||||
) {
|
||||
return this.rest.put(Routes.userApplicationRoleConnection(applicationId), {
|
||||
body: options,
|
||||
}) as Promise<RESTPutAPICurrentUserApplicationRoleConnectionResult>;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,8 @@ export class VoiceAPI {
|
||||
|
||||
/**
|
||||
* Fetches all voice regions
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/voice#list-voice-regions}
|
||||
*/
|
||||
public async getVoiceRegions() {
|
||||
return this.rest.get(Routes.voiceRegions()) as Promise<GetAPIVoiceRegionsResult>;
|
||||
|
||||
@@ -23,6 +23,8 @@ export class WebhooksAPI {
|
||||
/**
|
||||
* Fetches a webhook
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/webhook#get-webhook}
|
||||
* @see {@link https://discord.com/developers/docs/resources/webhook#get-webhook-with-token}
|
||||
* @param id - The id of the webhook
|
||||
* @param token - The token of the webhook
|
||||
*/
|
||||
@@ -33,6 +35,7 @@ export class WebhooksAPI {
|
||||
/**
|
||||
* Creates a new webhook
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/webhook#create-webhook}
|
||||
* @param channelId - The id of the channel to create the webhook in
|
||||
* @param data - The data to use when creating the webhook
|
||||
* @param reason - The reason for creating the webhook
|
||||
@@ -47,6 +50,8 @@ export class WebhooksAPI {
|
||||
/**
|
||||
* Edits a webhook
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/webhook#modify-webhook}
|
||||
* @see {@link https://discord.com/developers/docs/resources/webhook#modify-webhook-with-token}
|
||||
* @param id - The id of the webhook to edit
|
||||
* @param webhook - The new webhook data
|
||||
* @param options - The options to use when editing the webhook
|
||||
@@ -62,6 +67,8 @@ export class WebhooksAPI {
|
||||
/**
|
||||
* Deletes a webhook
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/webhook#delete-webhook}
|
||||
* @see {@link https://discord.com/developers/docs/resources/webhook#delete-webhook-with-token}
|
||||
* @param id - The id of the webhook to delete
|
||||
* @param options - The options to use when deleting the webhook
|
||||
*/
|
||||
@@ -72,6 +79,7 @@ export class WebhooksAPI {
|
||||
/**
|
||||
* Executes a webhook and returns the created message
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/webhook#execute-webhook}
|
||||
* @param id - The id of the webhook
|
||||
* @param token - The token of the webhook
|
||||
* @param data - The data to use when executing the webhook
|
||||
@@ -85,6 +93,7 @@ export class WebhooksAPI {
|
||||
/**
|
||||
* Executes a webhook
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/webhook#execute-webhook}
|
||||
* @param id - The id of the webhook
|
||||
* @param token - The token of the webhook
|
||||
* @param data - The data to use when executing the webhook
|
||||
@@ -98,6 +107,7 @@ export class WebhooksAPI {
|
||||
/**
|
||||
* Executes a webhook
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/webhook#execute-webhook}
|
||||
* @param id - The id of the webhook
|
||||
* @param token - The token of the webhook
|
||||
* @param data - The data to use when executing the webhook
|
||||
@@ -124,6 +134,7 @@ export class WebhooksAPI {
|
||||
/**
|
||||
* Executes a slack webhook
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/webhook#execute-slackcompatible-webhook}
|
||||
* @param id - The id of the webhook
|
||||
* @param token - The token of the webhook
|
||||
* @param options - The options to use when executing the webhook
|
||||
@@ -144,6 +155,7 @@ export class WebhooksAPI {
|
||||
/**
|
||||
* Executes a github webhook
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/webhook#execute-githubcompatible-webhook}
|
||||
* @param id - The id of the webhook
|
||||
* @param token - The token of the webhook
|
||||
* @param options - The options to use when executing the webhook
|
||||
@@ -164,6 +176,7 @@ export class WebhooksAPI {
|
||||
/**
|
||||
* Fetches an associated message from a webhook
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/webhook#get-webhook-message}
|
||||
* @param id - The id of the webhook
|
||||
* @param token - The token of the webhook
|
||||
* @param messageId - The id of the message to fetch
|
||||
@@ -179,6 +192,7 @@ export class WebhooksAPI {
|
||||
/**
|
||||
* Edits an associated message from a webhook
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/webhook#edit-webhook-message}
|
||||
* @param id - The id of the webhook
|
||||
* @param token - The token of the webhook
|
||||
* @param messageId - The id of the message to edit
|
||||
@@ -200,6 +214,7 @@ export class WebhooksAPI {
|
||||
/**
|
||||
* Deletes an associated message from a webhook
|
||||
*
|
||||
* @see {@link https://discord.com/developers/docs/resources/webhook#delete-webhook-message}
|
||||
* @param id - The id of the webhook
|
||||
* @param token - The token of the webhook
|
||||
* @param messageId - The id of the message to delete
|
||||
|
||||
@@ -2,6 +2,51 @@
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
# [14.7.1](https://github.com/discordjs/discord.js/compare/14.7.0...14.7.1) - (2022-12-01)
|
||||
|
||||
## Bug Fixes
|
||||
|
||||
- Prevent crash on no select menu option (#8881) ([11d195d](https://github.com/discordjs/discord.js/commit/11d195d04ff57d51adb0f0d3a0a7342f9e34aba0))
|
||||
|
||||
# [14.7.0](https://github.com/discordjs/discord.js/compare/14.6.0...14.7.0) - (2022-11-28)
|
||||
|
||||
## Bug Fixes
|
||||
|
||||
- **MessageMentions:** Add `InGuild` generic (#8828) ([f982803](https://github.com/discordjs/discord.js/commit/f9828034cd21e6f702762a46923e0f42115596f6))
|
||||
- **Activity:** Fix equals() not checking for differing emoji (#8841) ([7e06f68](https://github.com/discordjs/discord.js/commit/7e06f68185423ba7cb310220b213f445b6571e29))
|
||||
- Fixed react/astro/guide/discord.js build, updated dependencies, fix crawlvatar (#8861) ([d0c8256](https://github.com/discordjs/discord.js/commit/d0c82561b8a1765a1daa362ca903f3ffb3fa33ee))
|
||||
- **escapeMarkdown:** Fix double escaping (#8798) ([d6873b7](https://github.com/discordjs/discord.js/commit/d6873b7159352479475b3a0daa215bddbdd3a79b))
|
||||
- **Transfomers:** Call `.toJSON` in `toSnakeCase` (#8790) ([017f9b1](https://github.com/discordjs/discord.js/commit/017f9b1ed4014dc1db0b78c1a77e463b4403de5d))
|
||||
- Censor token in debug output (#8764) ([53d8e87](https://github.com/discordjs/discord.js/commit/53d8e87d7f3a329608250656950bd0a200adb1c7))
|
||||
- Pin @types/node version ([9d8179c](https://github.com/discordjs/discord.js/commit/9d8179c6a78e1c7f9976f852804055964d5385d4))
|
||||
|
||||
## Documentation
|
||||
|
||||
- Describe InteractionEditReplyOptions (#8840) ([cb77fd0](https://github.com/discordjs/discord.js/commit/cb77fd02d083438de2aff6f0769baf7d1797bc65))
|
||||
- **AutoModerationRuleManager:** Describe cache (#8848) ([d275480](https://github.com/discordjs/discord.js/commit/d2754802cc3479e6288cdbfcd48c76bf57e09a07))
|
||||
- Fix message action row components (#8819) ([65bc0ad](https://github.com/discordjs/discord.js/commit/65bc0adbf4d7870d33b92585ca18f964f24bc84e))
|
||||
- Specify `ActionRowBuilder` for `components` (#8834) ([8ed5c1b](https://github.com/discordjs/discord.js/commit/8ed5c1beb622f71ce0bd89e4cbeff50e464da8fe))
|
||||
- Add `@extends` for select menu classes (#8824) ([09f65b7](https://github.com/discordjs/discord.js/commit/09f65b724b0d2f36bbe89b83570c0d18093b5126))
|
||||
- Make WebSocketShard.lastPingTimestamp public (#8768) ([68c9cb3](https://github.com/discordjs/discord.js/commit/68c9cb37bc3df6326b720291827ea477e421faf2))
|
||||
- **MessageReplyOptions:** Remove duplicate stickers field (#8766) ([6e348ff](https://github.com/discordjs/discord.js/commit/6e348ffd1d8db8d8ad2da7823460814695e01a43))
|
||||
|
||||
## Features
|
||||
|
||||
- **Webhook:** Add `channel` property (#8812) ([decbce4](https://github.com/discordjs/discord.js/commit/decbce401062af75f633e6acacc88207b115a719))
|
||||
- Auto Moderation (#7938) ([fd4ba5e](https://github.com/discordjs/discord.js/commit/fd4ba5eaba66898699127fc0d5f0ab52c18e3db0))
|
||||
- **SelectMenuInteractions:** Add `values` property (#8805) ([b2fabd1](https://github.com/discordjs/discord.js/commit/b2fabd130a76ea54cfbfa1b871ef8659513c2c7a))
|
||||
- **ThreadChannel:** Add a helper for pin and unpin (#8786) ([e74aa7f](https://github.com/discordjs/discord.js/commit/e74aa7f6b0fe04e3473fc4a62a73a7db87307685))
|
||||
- Add `Message#bulkDeletable` (#8760) ([ff85481](https://github.com/discordjs/discord.js/commit/ff85481d3e7cd6f7c5e38edbe43b27b104e82fba))
|
||||
- New select menus (#8793) ([5152abf](https://github.com/discordjs/discord.js/commit/5152abf7285581abf7689e9050fdc56c4abb1e2b))
|
||||
- **InteractionResponses:** Add message parameter (#8773) ([8b400ca](https://github.com/discordjs/discord.js/commit/8b400ca975c6bad00060b9c67068f42bd53524ba))
|
||||
- Support resume urls (#8784) ([88cd9d9](https://github.com/discordjs/discord.js/commit/88cd9d906074eb79e85df0ef49287f11133d2e0d))
|
||||
- Allow deletion of ephemeral messages (#8774) ([fc10774](https://github.com/discordjs/discord.js/commit/fc107744618857bf28c2167f204253baf690ede8))
|
||||
- **GuildChannelManager:** Add `.addFollower()` method (#8567) ([caeb1cb](https://github.com/discordjs/discord.js/commit/caeb1cbfdb2f2f007252c4d7e9f47a575c24bcb5))
|
||||
|
||||
## Refactor
|
||||
|
||||
- **Embed:** Use `embedLength` function from builders (#8735) ([cb3826c](https://github.com/discordjs/discord.js/commit/cb3826ce6dbcd3cf7ab639af6cdfcea80336aa1d))
|
||||
|
||||
# [14.6.0](https://github.com/discordjs/discord.js/compare/14.5.0...14.6.0) - (2022-10-10)
|
||||
|
||||
## Bug Fixes
|
||||
@@ -230,7 +275,7 @@ All notable changes to this project will be documented in this file.
|
||||
|
||||
- **DataResolver#resolveImage:** Adjust to updated resolveFile (#8308) ([3a7e93d](https://github.com/discordjs/discord.js/commit/3a7e93df576172c797f1d8bd6483234bb6af2d00))
|
||||
|
||||
# [14.0.0](https://github.com/discordjs/discord.js/tree/14.0.0) - (2022-07-17)
|
||||
# [14.0.0](https://github.com/discordjs/discord.js/compare/13.12.0...14.0.0) - (2022-07-17)
|
||||
|
||||
## Bug Fixes
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "discord.js",
|
||||
"version": "14.6.0",
|
||||
"version": "14.7.1",
|
||||
"description": "A powerful library for interacting with the Discord API",
|
||||
"scripts": {
|
||||
"test": "yarn docs:test && yarn test:typescript",
|
||||
@@ -65,13 +65,13 @@
|
||||
"devDependencies": {
|
||||
"@discordjs/docgen": "workspace:^",
|
||||
"@favware/cliff-jumper": "^1.9.0",
|
||||
"@types/node": "16.18.3",
|
||||
"@types/node": "16.18.4",
|
||||
"dtslint": "^4.2.1",
|
||||
"eslint": "^8.28.0",
|
||||
"eslint-formatter-pretty": "^4.1.0",
|
||||
"jest": "^29.3.1",
|
||||
"prettier": "^2.8.0",
|
||||
"tsd": "^0.24.1",
|
||||
"tsd": "^0.25.0",
|
||||
"tslint": "^6.1.3",
|
||||
"typescript": "^4.9.3"
|
||||
},
|
||||
|
||||
@@ -68,7 +68,7 @@ class WebhookClient extends BaseClient {
|
||||
/* eslint-disable no-empty-function, valid-jsdoc */
|
||||
/**
|
||||
* Sends a message with this webhook.
|
||||
* @param {string|MessagePayload|WebhookCreateMessageOptions} options The content for the reply
|
||||
* @param {string|MessagePayload|WebhookMessageCreateOptions} options The content for the reply
|
||||
* @returns {Promise<APIMessage>}
|
||||
*/
|
||||
send() {}
|
||||
@@ -84,7 +84,7 @@ class WebhookClient extends BaseClient {
|
||||
/**
|
||||
* Edits a message that was sent by this webhook.
|
||||
* @param {MessageResolvable} message The message to edit
|
||||
* @param {string|MessagePayload|WebhookEditMessageOptions} options The options to provide
|
||||
* @param {string|MessagePayload|WebhookMessageEditOptions} options The options to provide
|
||||
* @returns {Promise<APIMessage>} Returns the message edited by this webhook
|
||||
*/
|
||||
editMessage() {}
|
||||
|
||||
@@ -602,6 +602,9 @@ class WebSocketShard extends EventEmitter {
|
||||
`[WebSocket] did not close properly, assuming a zombie connection.\nEmitting close and reconnecting again.`,
|
||||
);
|
||||
|
||||
// Cleanup connection listeners
|
||||
this._cleanupConnection();
|
||||
|
||||
this.emitClose();
|
||||
// Setting the variable false to check for zombie connections.
|
||||
this.closeEmitted = false;
|
||||
|
||||
@@ -206,5 +206,6 @@ exports.WebSocket = require('./WebSocket');
|
||||
// External
|
||||
__exportStar(require('discord-api-types/v10'), exports);
|
||||
__exportStar(require('@discordjs/builders'), exports);
|
||||
__exportStar(require('@discordjs/formatters'), exports);
|
||||
__exportStar(require('@discordjs/rest'), exports);
|
||||
__exportStar(require('@discordjs/util'), exports);
|
||||
|
||||
@@ -252,6 +252,7 @@ class ApplicationCommandManager extends CachedManager {
|
||||
name: command.name,
|
||||
name_localizations: command.nameLocalizations ?? command.name_localizations,
|
||||
description: command.description,
|
||||
nsfw: command.nsfw,
|
||||
description_localizations: command.descriptionLocalizations ?? command.description_localizations,
|
||||
type: command.type,
|
||||
options: command.options?.map(o => ApplicationCommand.transformOption(o)),
|
||||
|
||||
@@ -112,14 +112,14 @@ class ApplicationCommandPermissionsManager extends BaseManager {
|
||||
* Options used to set permissions for one or more Application Commands in a guild
|
||||
* <warn>Omitting the `command` parameter edits the guild wide permissions
|
||||
* when the manager's `commandId` is `null`</warn>
|
||||
* @typedef {BaseApplicationCommandPermissionsOptions} EditApplicationCommandPermissionsOptions
|
||||
* @typedef {BaseApplicationCommandPermissionsOptions} ApplicationCommandPermissionsEditOptions
|
||||
* @property {ApplicationCommandPermissions[]} permissions The new permissions for the guild or overwrite
|
||||
* @property {string} token The bearer token to use that authorizes the permission edit
|
||||
*/
|
||||
|
||||
/**
|
||||
* Sets the permissions for the guild or a command overwrite.
|
||||
* @param {EditApplicationCommandPermissionsOptions} options Options used to set permissions
|
||||
* @param {ApplicationCommandPermissionsEditOptions} options Options used to set permissions
|
||||
* @returns {Promise<ApplicationCommandPermissions[]|Collection<Snowflake, ApplicationCommandPermissions[]>>}
|
||||
* @example
|
||||
* // Set a permission overwrite for a command
|
||||
@@ -179,7 +179,7 @@ class ApplicationCommandPermissionsManager extends BaseManager {
|
||||
|
||||
/**
|
||||
* Add permissions to a command.
|
||||
* @param {EditApplicationCommandPermissionsOptions} options Options used to add permissions
|
||||
* @param {ApplicationCommandPermissionsEditOptions} options Options used to add permissions
|
||||
* @returns {Promise<ApplicationCommandPermissions[]>}
|
||||
* @example
|
||||
* // Add a rule to block a role from using a command
|
||||
|
||||
@@ -258,7 +258,7 @@ class GuildChannelManager extends CachedManager {
|
||||
/**
|
||||
* Edits the channel.
|
||||
* @param {GuildChannelResolvable} channel The channel to edit
|
||||
* @param {GuildChannelEditOptions} data Options for editing the channel
|
||||
* @param {GuildChannelEditOptions} options Options for editing the channel
|
||||
* @returns {Promise<GuildChannel>}
|
||||
* @example
|
||||
* // Edit a channel
|
||||
@@ -266,19 +266,19 @@ class GuildChannelManager extends CachedManager {
|
||||
* .then(console.log)
|
||||
* .catch(console.error);
|
||||
*/
|
||||
async edit(channel, data) {
|
||||
async edit(channel, options) {
|
||||
channel = this.resolve(channel);
|
||||
if (!channel) throw new DiscordjsTypeError(ErrorCodes.InvalidType, 'channel', 'GuildChannelResolvable');
|
||||
|
||||
const parent = data.parent && this.client.channels.resolveId(data.parent);
|
||||
const parent = options.parent && this.client.channels.resolveId(options.parent);
|
||||
|
||||
if (typeof data.position !== 'undefined') {
|
||||
await this.setPosition(channel, data.position, { position: data.position, reason: data.reason });
|
||||
if (typeof options.position !== 'undefined') {
|
||||
await this.setPosition(channel, options.position, { position: options.position, reason: options.reason });
|
||||
}
|
||||
|
||||
let permission_overwrites = data.permissionOverwrites?.map(o => PermissionOverwrites.resolve(o, this.guild));
|
||||
let permission_overwrites = options.permissionOverwrites?.map(o => PermissionOverwrites.resolve(o, this.guild));
|
||||
|
||||
if (data.lockPermissions) {
|
||||
if (options.lockPermissions) {
|
||||
if (parent) {
|
||||
const newParent = this.guild.channels.resolve(parent);
|
||||
if (newParent?.type === ChannelType.GuildCategory) {
|
||||
@@ -295,26 +295,27 @@ class GuildChannelManager extends CachedManager {
|
||||
|
||||
const newData = await this.client.rest.patch(Routes.channel(channel.id), {
|
||||
body: {
|
||||
name: (data.name ?? channel.name).trim(),
|
||||
type: data.type,
|
||||
topic: data.topic,
|
||||
nsfw: data.nsfw,
|
||||
bitrate: data.bitrate ?? channel.bitrate,
|
||||
user_limit: data.userLimit ?? channel.userLimit,
|
||||
rtc_region: 'rtcRegion' in data ? data.rtcRegion : channel.rtcRegion,
|
||||
video_quality_mode: data.videoQualityMode,
|
||||
name: (options.name ?? channel.name).trim(),
|
||||
type: options.type,
|
||||
topic: options.topic,
|
||||
nsfw: options.nsfw,
|
||||
bitrate: options.bitrate ?? channel.bitrate,
|
||||
user_limit: options.userLimit ?? channel.userLimit,
|
||||
rtc_region: 'rtcRegion' in options ? options.rtcRegion : channel.rtcRegion,
|
||||
video_quality_mode: options.videoQualityMode,
|
||||
parent_id: parent,
|
||||
lock_permissions: data.lockPermissions,
|
||||
rate_limit_per_user: data.rateLimitPerUser,
|
||||
default_auto_archive_duration: data.defaultAutoArchiveDuration,
|
||||
lock_permissions: options.lockPermissions,
|
||||
rate_limit_per_user: options.rateLimitPerUser,
|
||||
default_auto_archive_duration: options.defaultAutoArchiveDuration,
|
||||
permission_overwrites,
|
||||
available_tags: data.availableTags?.map(availableTag => transformGuildForumTag(availableTag)),
|
||||
default_reaction_emoji: data.defaultReactionEmoji && transformGuildDefaultReaction(data.defaultReactionEmoji),
|
||||
default_thread_rate_limit_per_user: data.defaultThreadRateLimitPerUser,
|
||||
flags: 'flags' in data ? ChannelFlagsBitField.resolve(data.flags) : undefined,
|
||||
default_sort_order: data.defaultSortOrder,
|
||||
available_tags: options.availableTags?.map(availableTag => transformGuildForumTag(availableTag)),
|
||||
default_reaction_emoji:
|
||||
options.defaultReactionEmoji && transformGuildDefaultReaction(options.defaultReactionEmoji),
|
||||
default_thread_rate_limit_per_user: options.defaultThreadRateLimitPerUser,
|
||||
flags: 'flags' in options ? ChannelFlagsBitField.resolve(options.flags) : undefined,
|
||||
default_sort_order: options.defaultSortOrder,
|
||||
},
|
||||
reason: data.reason,
|
||||
reason: options.reason,
|
||||
});
|
||||
|
||||
return this.client.actions.ChannelUpdate.handle(newData).updated;
|
||||
|
||||
@@ -124,19 +124,19 @@ class GuildEmojiManager extends BaseGuildEmojiManager {
|
||||
/**
|
||||
* Edits an emoji.
|
||||
* @param {EmojiResolvable} emoji The Emoji resolvable to edit
|
||||
* @param {GuildEmojiEditData} data The new data for the emoji
|
||||
* @param {GuildEmojiEditOptions} options The options to provide
|
||||
* @returns {Promise<GuildEmoji>}
|
||||
*/
|
||||
async edit(emoji, data) {
|
||||
async edit(emoji, options) {
|
||||
const id = this.resolveId(emoji);
|
||||
if (!id) throw new DiscordjsTypeError(ErrorCodes.InvalidType, 'emoji', 'EmojiResolvable', true);
|
||||
const roles = data.roles?.map(r => this.guild.roles.resolveId(r));
|
||||
const roles = options.roles?.map(r => this.guild.roles.resolveId(r));
|
||||
const newData = await this.client.rest.patch(Routes.guildEmoji(this.guild.id, id), {
|
||||
body: {
|
||||
name: data.name,
|
||||
name: options.name,
|
||||
roles,
|
||||
},
|
||||
reason: data.reason,
|
||||
reason: options.reason,
|
||||
});
|
||||
const existing = this.cache.get(id);
|
||||
if (existing) {
|
||||
|
||||
@@ -167,7 +167,7 @@ class GuildInviteManager extends CachedManager {
|
||||
/**
|
||||
* Create an invite to the guild from the provided channel.
|
||||
* @param {GuildInvitableChannelResolvable} channel The options for creating the invite from a channel.
|
||||
* @param {CreateInviteOptions} [options={}] The options for creating the invite from a channel.
|
||||
* @param {InviteCreateOptions} [options={}] The options for creating the invite from a channel.
|
||||
* @returns {Promise<Invite>}
|
||||
* @example
|
||||
* // Create an invite to a selected channel
|
||||
|
||||
@@ -270,7 +270,7 @@ class GuildMemberManager extends CachedManager {
|
||||
|
||||
/**
|
||||
* The data for editing a guild member.
|
||||
* @typedef {Object} GuildMemberEditData
|
||||
* @typedef {Object} GuildMemberEditOptions
|
||||
* @property {?string} [nick] The nickname to set for the member
|
||||
* @property {Collection<Snowflake, Role>|RoleResolvable[]} [roles] The roles or role ids to apply
|
||||
* @property {boolean} [mute] Whether or not the member should be muted
|
||||
@@ -286,43 +286,43 @@ class GuildMemberManager extends CachedManager {
|
||||
* Edits a member of the guild.
|
||||
* <info>The user must be a member of the guild</info>
|
||||
* @param {UserResolvable} user The member to edit
|
||||
* @param {GuildMemberEditData} data The data to edit the member with
|
||||
* @param {GuildMemberEditOptions} options The options to provide
|
||||
* @returns {Promise<GuildMember>}
|
||||
*/
|
||||
async edit(user, { reason, ...data }) {
|
||||
async edit(user, { reason, ...options }) {
|
||||
const id = this.client.users.resolveId(user);
|
||||
if (!id) throw new DiscordjsTypeError(ErrorCodes.InvalidType, 'user', 'UserResolvable');
|
||||
|
||||
if (data.channel) {
|
||||
data.channel = this.guild.channels.resolve(data.channel);
|
||||
if (!(data.channel instanceof BaseGuildVoiceChannel)) {
|
||||
if (options.channel) {
|
||||
options.channel = this.guild.channels.resolve(options.channel);
|
||||
if (!(options.channel instanceof BaseGuildVoiceChannel)) {
|
||||
throw new DiscordjsError(ErrorCodes.GuildVoiceChannelResolve);
|
||||
}
|
||||
data.channel_id = data.channel.id;
|
||||
data.channel = undefined;
|
||||
} else if (data.channel === null) {
|
||||
data.channel_id = null;
|
||||
data.channel = undefined;
|
||||
options.channel_id = options.channel.id;
|
||||
options.channel = undefined;
|
||||
} else if (options.channel === null) {
|
||||
options.channel_id = null;
|
||||
options.channel = undefined;
|
||||
}
|
||||
data.roles &&= data.roles.map(role => (role instanceof Role ? role.id : role));
|
||||
options.roles &&= options.roles.map(role => (role instanceof Role ? role.id : role));
|
||||
|
||||
if (typeof data.communicationDisabledUntil !== 'undefined') {
|
||||
data.communication_disabled_until =
|
||||
if (typeof options.communicationDisabledUntil !== 'undefined') {
|
||||
options.communication_disabled_until =
|
||||
// eslint-disable-next-line eqeqeq
|
||||
data.communicationDisabledUntil != null
|
||||
? new Date(data.communicationDisabledUntil).toISOString()
|
||||
: data.communicationDisabledUntil;
|
||||
options.communicationDisabledUntil != null
|
||||
? new Date(options.communicationDisabledUntil).toISOString()
|
||||
: options.communicationDisabledUntil;
|
||||
}
|
||||
|
||||
let endpoint;
|
||||
if (id === this.client.user.id) {
|
||||
const keys = Object.keys(data);
|
||||
const keys = Object.keys(options);
|
||||
if (keys.length === 1 && keys[0] === 'nick') endpoint = Routes.guildMember(this.guild.id);
|
||||
else endpoint = Routes.guildMember(this.guild.id, id);
|
||||
} else {
|
||||
endpoint = Routes.guildMember(this.guild.id, id);
|
||||
}
|
||||
const d = await this.client.rest.patch(endpoint, { body: data, reason });
|
||||
const d = await this.client.rest.patch(endpoint, { body: options, reason });
|
||||
|
||||
const clone = this.cache.get(id)?._clone();
|
||||
clone?._patch(d);
|
||||
|
||||
@@ -101,16 +101,16 @@ class GuildStickerManager extends CachedManager {
|
||||
/**
|
||||
* Edits a sticker.
|
||||
* @param {StickerResolvable} sticker The sticker to edit
|
||||
* @param {GuildStickerEditData} [data={}] The new data for the sticker
|
||||
* @param {GuildStickerEditOptions} [options={}] The new data for the sticker
|
||||
* @returns {Promise<Sticker>}
|
||||
*/
|
||||
async edit(sticker, data = {}) {
|
||||
async edit(sticker, options = {}) {
|
||||
const stickerId = this.resolveId(sticker);
|
||||
if (!stickerId) throw new DiscordjsTypeError(ErrorCodes.InvalidType, 'sticker', 'StickerResolvable');
|
||||
|
||||
const d = await this.client.rest.patch(Routes.guildSticker(this.guild.id, stickerId), {
|
||||
body: data,
|
||||
reason: data.reason,
|
||||
body: options,
|
||||
reason: options.reason,
|
||||
});
|
||||
|
||||
const existing = this.cache.get(stickerId);
|
||||
|
||||
@@ -100,7 +100,7 @@ class RoleManager extends CachedManager {
|
||||
|
||||
/**
|
||||
* Options used to create a new role.
|
||||
* @typedef {Object} CreateRoleOptions
|
||||
* @typedef {Object} RoleCreateOptions
|
||||
* @property {string} [name] The name of the new role
|
||||
* @property {ColorResolvable} [color] The data to create the role with
|
||||
* @property {boolean} [hoist] Whether or not the new role should be hoisted
|
||||
@@ -117,7 +117,7 @@ class RoleManager extends CachedManager {
|
||||
/**
|
||||
* Creates a new role in the guild with given information.
|
||||
* <warn>The position will silently reset to 1 if an invalid one is provided, or none.</warn>
|
||||
* @param {CreateRoleOptions} [options] Options for creating the new role
|
||||
* @param {RoleCreateOptions} [options] Options for creating the new role
|
||||
* @returns {Promise<Role>}
|
||||
* @example
|
||||
* // Create a new role
|
||||
@@ -166,14 +166,14 @@ class RoleManager extends CachedManager {
|
||||
|
||||
/**
|
||||
* Options for editing a role
|
||||
* @typedef {RoleData} EditRoleOptions
|
||||
* @typedef {RoleData} RoleEditOptions
|
||||
* @property {string} [reason] The reason for editing this role
|
||||
*/
|
||||
|
||||
/**
|
||||
* Edits a role of the guild.
|
||||
* @param {RoleResolvable} role The role to edit
|
||||
* @param {EditRoleOptions} data The new data for the role
|
||||
* @param {RoleEditOptions} options The options to provide
|
||||
* @returns {Promise<Role>}
|
||||
* @example
|
||||
* // Edit a role
|
||||
@@ -181,15 +181,15 @@ class RoleManager extends CachedManager {
|
||||
* .then(updated => console.log(`Edited role name to ${updated.name}`))
|
||||
* .catch(console.error);
|
||||
*/
|
||||
async edit(role, data) {
|
||||
async edit(role, options) {
|
||||
role = this.resolve(role);
|
||||
if (!role) throw new DiscordjsTypeError(ErrorCodes.InvalidType, 'role', 'RoleResolvable');
|
||||
|
||||
if (typeof data.position === 'number') {
|
||||
await this.setPosition(role, data.position, { reason: data.reason });
|
||||
if (typeof options.position === 'number') {
|
||||
await this.setPosition(role, options.position, { reason: options.reason });
|
||||
}
|
||||
|
||||
let icon = data.icon;
|
||||
let icon = options.icon;
|
||||
if (icon) {
|
||||
const guildEmojiURL = this.guild.emojis.resolve(icon)?.url;
|
||||
icon = guildEmojiURL ? await DataResolver.resolveImage(guildEmojiURL) : await DataResolver.resolveImage(icon);
|
||||
@@ -197,16 +197,17 @@ class RoleManager extends CachedManager {
|
||||
}
|
||||
|
||||
const body = {
|
||||
name: data.name,
|
||||
color: typeof data.color === 'undefined' ? undefined : resolveColor(data.color),
|
||||
hoist: data.hoist,
|
||||
permissions: typeof data.permissions === 'undefined' ? undefined : new PermissionsBitField(data.permissions),
|
||||
mentionable: data.mentionable,
|
||||
name: options.name,
|
||||
color: typeof options.color === 'undefined' ? undefined : resolveColor(options.color),
|
||||
hoist: options.hoist,
|
||||
permissions:
|
||||
typeof options.permissions === 'undefined' ? undefined : new PermissionsBitField(options.permissions),
|
||||
mentionable: options.mentionable,
|
||||
icon,
|
||||
unicode_emoji: data.unicodeEmoji,
|
||||
unicode_emoji: options.unicodeEmoji,
|
||||
};
|
||||
|
||||
const d = await this.client.rest.patch(Routes.guildRole(this.guild.id, role.id), { body, reason: data.reason });
|
||||
const d = await this.client.rest.patch(Routes.guildRole(this.guild.id, role.id), { body, reason: options.reason });
|
||||
|
||||
const clone = role._clone();
|
||||
clone._patch(d);
|
||||
|
||||
@@ -21,8 +21,14 @@ class Shard extends EventEmitter {
|
||||
constructor(manager, id) {
|
||||
super();
|
||||
|
||||
if (manager.mode === 'process') childProcess = require('node:child_process');
|
||||
else if (manager.mode === 'worker') Worker = require('node:worker_threads').Worker;
|
||||
switch (manager.mode) {
|
||||
case 'process':
|
||||
childProcess = require('node:child_process');
|
||||
break;
|
||||
case 'worker':
|
||||
Worker = require('node:worker_threads').Worker;
|
||||
break;
|
||||
}
|
||||
|
||||
/**
|
||||
* Manager that created the shard
|
||||
@@ -112,18 +118,21 @@ class Shard extends EventEmitter {
|
||||
|
||||
this._exitListener = this._handleExit.bind(this, undefined, timeout);
|
||||
|
||||
if (this.manager.mode === 'process') {
|
||||
this.process = childProcess
|
||||
.fork(path.resolve(this.manager.file), this.args, {
|
||||
env: this.env,
|
||||
execArgv: this.execArgv,
|
||||
})
|
||||
.on('message', this._handleMessage.bind(this))
|
||||
.on('exit', this._exitListener);
|
||||
} else if (this.manager.mode === 'worker') {
|
||||
this.worker = new Worker(path.resolve(this.manager.file), { workerData: this.env })
|
||||
.on('message', this._handleMessage.bind(this))
|
||||
.on('exit', this._exitListener);
|
||||
switch (this.manager.mode) {
|
||||
case 'process':
|
||||
this.process = childProcess
|
||||
.fork(path.resolve(this.manager.file), this.args, {
|
||||
env: this.env,
|
||||
execArgv: this.execArgv,
|
||||
})
|
||||
.on('message', this._handleMessage.bind(this))
|
||||
.on('exit', this._exitListener);
|
||||
break;
|
||||
case 'worker':
|
||||
this.worker = new Worker(path.resolve(this.manager.file), { workerData: this.env })
|
||||
.on('message', this._handleMessage.bind(this))
|
||||
.on('exit', this._exitListener);
|
||||
break;
|
||||
}
|
||||
|
||||
this._evals.clear();
|
||||
|
||||
@@ -29,29 +29,32 @@ class ShardClientUtil {
|
||||
*/
|
||||
this.parentPort = null;
|
||||
|
||||
if (mode === 'process') {
|
||||
process.on('message', this._handleMessage.bind(this));
|
||||
client.on('ready', () => {
|
||||
process.send({ _ready: true });
|
||||
});
|
||||
client.on('disconnect', () => {
|
||||
process.send({ _disconnect: true });
|
||||
});
|
||||
client.on('reconnecting', () => {
|
||||
process.send({ _reconnecting: true });
|
||||
});
|
||||
} else if (mode === 'worker') {
|
||||
this.parentPort = require('node:worker_threads').parentPort;
|
||||
this.parentPort.on('message', this._handleMessage.bind(this));
|
||||
client.on('ready', () => {
|
||||
this.parentPort.postMessage({ _ready: true });
|
||||
});
|
||||
client.on('disconnect', () => {
|
||||
this.parentPort.postMessage({ _disconnect: true });
|
||||
});
|
||||
client.on('reconnecting', () => {
|
||||
this.parentPort.postMessage({ _reconnecting: true });
|
||||
});
|
||||
switch (mode) {
|
||||
case 'process':
|
||||
process.on('message', this._handleMessage.bind(this));
|
||||
client.on('ready', () => {
|
||||
process.send({ _ready: true });
|
||||
});
|
||||
client.on('disconnect', () => {
|
||||
process.send({ _disconnect: true });
|
||||
});
|
||||
client.on('reconnecting', () => {
|
||||
process.send({ _reconnecting: true });
|
||||
});
|
||||
break;
|
||||
case 'worker':
|
||||
this.parentPort = require('node:worker_threads').parentPort;
|
||||
this.parentPort.on('message', this._handleMessage.bind(this));
|
||||
client.on('ready', () => {
|
||||
this.parentPort.postMessage({ _ready: true });
|
||||
});
|
||||
client.on('disconnect', () => {
|
||||
this.parentPort.postMessage({ _disconnect: true });
|
||||
});
|
||||
client.on('reconnecting', () => {
|
||||
this.parentPort.postMessage({ _reconnecting: true });
|
||||
});
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -81,14 +84,17 @@ class ShardClientUtil {
|
||||
*/
|
||||
send(message) {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (this.mode === 'process') {
|
||||
process.send(message, err => {
|
||||
if (err) reject(err);
|
||||
else resolve();
|
||||
});
|
||||
} else if (this.mode === 'worker') {
|
||||
this.parentPort.postMessage(message);
|
||||
resolve();
|
||||
switch (this.mode) {
|
||||
case 'process':
|
||||
process.send(message, err => {
|
||||
if (err) reject(err);
|
||||
else resolve();
|
||||
});
|
||||
break;
|
||||
case 'worker':
|
||||
this.parentPort.postMessage(message);
|
||||
resolve();
|
||||
break;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ class ActionRow extends Component {
|
||||
* Creates a new action row builder from JSON data
|
||||
* @param {JSONEncodable<APIActionRowComponent>|APIActionRowComponent} other The other data
|
||||
* @returns {ActionRowBuilder}
|
||||
* @deprecated Use {@link ActionRowBuilder.from()} instead.
|
||||
* @deprecated Use {@link ActionRowBuilder.from} instead.
|
||||
*/
|
||||
static from(other) {
|
||||
if (isJSONEncodable(other)) {
|
||||
|
||||
@@ -52,6 +52,12 @@ class ApplicationCommand extends Base {
|
||||
*/
|
||||
this.type = data.type;
|
||||
|
||||
/**
|
||||
* Whether this command is age-restricted (18+)
|
||||
* @type {boolean}
|
||||
*/
|
||||
this.nsfw = data.nsfw ?? false;
|
||||
|
||||
this._patch(data);
|
||||
}
|
||||
|
||||
@@ -188,6 +194,7 @@ class ApplicationCommand extends Base {
|
||||
* {@link ApplicationCommandType.ChatInput}
|
||||
* @property {Object<Locale, string>} [nameLocalizations] The localizations for the command name
|
||||
* @property {string} description The description of the command, if type is {@link ApplicationCommandType.ChatInput}
|
||||
* @property {boolean} [nsfw] Whether the command is age-restricted
|
||||
* @property {Object<Locale, string>} [descriptionLocalizations] The localizations for the command description,
|
||||
* if type is {@link ApplicationCommandType.ChatInput}
|
||||
* @property {ApplicationCommandType} [type=ApplicationCommandType.ChatInput] The type of the command
|
||||
@@ -377,6 +384,7 @@ class ApplicationCommand extends Base {
|
||||
('description' in command && command.description !== this.description) ||
|
||||
('version' in command && command.version !== this.version) ||
|
||||
(command.type && command.type !== this.type) ||
|
||||
('nsfw' in command && command.nsfw !== this.nsfw) ||
|
||||
// Future proof for options being nullable
|
||||
// TODO: remove ?? 0 on each when nullable
|
||||
(command.options?.length ?? 0) !== (this.options?.length ?? 0) ||
|
||||
|
||||
@@ -125,7 +125,7 @@ class BaseGuildTextChannel extends GuildChannel {
|
||||
|
||||
/**
|
||||
* Options used to create an invite to a guild channel.
|
||||
* @typedef {Object} CreateInviteOptions
|
||||
* @typedef {Object} InviteCreateOptions
|
||||
* @property {boolean} [temporary] Whether members that joined via the invite should be automatically
|
||||
* kicked after 24 hours if they have not yet received a role
|
||||
* @property {number} [maxAge] How long the invite should last (in seconds, 0 for forever)
|
||||
@@ -142,7 +142,7 @@ class BaseGuildTextChannel extends GuildChannel {
|
||||
|
||||
/**
|
||||
* Creates an invite to this guild channel.
|
||||
* @param {CreateInviteOptions} [options={}] The options for creating the invite
|
||||
* @param {InviteCreateOptions} [options={}] The options for creating the invite
|
||||
* @returns {Promise<Invite>}
|
||||
* @example
|
||||
* // Create an invite to a channel
|
||||
|
||||
@@ -98,7 +98,7 @@ class BaseGuildVoiceChannel extends GuildChannel {
|
||||
|
||||
/**
|
||||
* Creates an invite to this guild channel.
|
||||
* @param {CreateInviteOptions} [options={}] The options for creating the invite
|
||||
* @param {InviteCreateOptions} [options={}] The options for creating the invite
|
||||
* @returns {Promise<Invite>}
|
||||
* @example
|
||||
* // Create an invite to a channel
|
||||
|
||||
@@ -275,7 +275,7 @@ class BaseInteraction extends Base {
|
||||
* Indicates whether this interaction is a {@link StringSelectMenuInteraction}.
|
||||
* @returns {boolean}
|
||||
*
|
||||
* @deprecated Use {@link Interaction#isStringSelectMenu} instead
|
||||
* @deprecated Use {@link BaseInteraction#isStringSelectMenu} instead.
|
||||
*/
|
||||
isSelectMenu() {
|
||||
return this.isStringSelectMenu();
|
||||
|
||||
@@ -10,19 +10,21 @@ const MessageComponentInteraction = require('./MessageComponentInteraction');
|
||||
class ChannelSelectMenuInteraction extends MessageComponentInteraction {
|
||||
constructor(client, data) {
|
||||
super(client, data);
|
||||
const { resolved, values } = data.data;
|
||||
|
||||
/**
|
||||
* An array of the selected channel ids
|
||||
* @type {Snowflake[]}
|
||||
*/
|
||||
this.values = data.data.values ?? [];
|
||||
this.values = values ?? [];
|
||||
|
||||
/**
|
||||
* Collection of the selected channels
|
||||
* @type {Collection<Snowflake, Channel|APIChannel>}
|
||||
*/
|
||||
this.channels = new Collection();
|
||||
for (const channel of Object.values(data.data.resolved.channels)) {
|
||||
|
||||
for (const channel of Object.values(resolved?.channels ?? {})) {
|
||||
this.channels.set(channel.id, this.client.channels._add(channel, this.guild) ?? channel);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,19 +44,19 @@ class ClientUser extends User {
|
||||
|
||||
/**
|
||||
* Data used to edit the logged in client
|
||||
* @typedef {Object} ClientUserEditData
|
||||
* @typedef {Object} ClientUserEditOptions
|
||||
* @property {string} [username] The new username
|
||||
* @property {?(BufferResolvable|Base64Resolvable)} [avatar] The new avatar
|
||||
*/
|
||||
|
||||
/**
|
||||
* Edits the logged in client.
|
||||
* @param {ClientUserEditData} data The new data
|
||||
* @param {ClientUserEditOptions} options The options to provide
|
||||
* @returns {Promise<ClientUser>}
|
||||
*/
|
||||
async edit(data) {
|
||||
if (typeof data.avatar !== 'undefined') data.avatar = await DataResolver.resolveImage(data.avatar);
|
||||
const newData = await this.client.rest.patch(Routes.user(), { body: data });
|
||||
async edit(options) {
|
||||
if (typeof options.avatar !== 'undefined') options.avatar = await DataResolver.resolveImage(options.avatar);
|
||||
const newData = await this.client.rest.patch(Routes.user(), { body: options });
|
||||
this.client.token = newData.token;
|
||||
this.client.rest.setToken(newData.token);
|
||||
const { updated } = this.client.actions.UserUpdate.handle(newData);
|
||||
|
||||
@@ -85,18 +85,18 @@ class CommandInteractionOptionResolver {
|
||||
/**
|
||||
* Gets an option by name and property and checks its type.
|
||||
* @param {string} name The name of the option.
|
||||
* @param {ApplicationCommandOptionType} type The type of the option.
|
||||
* @param {ApplicationCommandOptionType[]} allowedTypes The allowed types of the option.
|
||||
* @param {string[]} properties The properties to check for for `required`.
|
||||
* @param {boolean} required Whether to throw an error if the option is not found.
|
||||
* @returns {?CommandInteractionOption} The option, if found.
|
||||
* @private
|
||||
*/
|
||||
_getTypedOption(name, type, properties, required) {
|
||||
_getTypedOption(name, allowedTypes, properties, required) {
|
||||
const option = this.get(name, required);
|
||||
if (!option) {
|
||||
return null;
|
||||
} else if (option.type !== type) {
|
||||
throw new DiscordjsTypeError(ErrorCodes.CommandInteractionOptionType, name, option.type, type);
|
||||
} else if (!allowedTypes.includes(option.type)) {
|
||||
throw new DiscordjsTypeError(ErrorCodes.CommandInteractionOptionType, name, option.type, allowedTypes.join(', '));
|
||||
} else if (required && properties.every(prop => option[prop] === null || typeof option[prop] === 'undefined')) {
|
||||
throw new DiscordjsTypeError(ErrorCodes.CommandInteractionOptionEmpty, name, option.type);
|
||||
}
|
||||
@@ -134,7 +134,7 @@ class CommandInteractionOptionResolver {
|
||||
* @returns {?boolean} The value of the option, or null if not set and not required.
|
||||
*/
|
||||
getBoolean(name, required = false) {
|
||||
const option = this._getTypedOption(name, ApplicationCommandOptionType.Boolean, ['value'], required);
|
||||
const option = this._getTypedOption(name, [ApplicationCommandOptionType.Boolean], ['value'], required);
|
||||
return option?.value ?? null;
|
||||
}
|
||||
|
||||
@@ -146,7 +146,7 @@ class CommandInteractionOptionResolver {
|
||||
* The value of the option, or null if not set and not required.
|
||||
*/
|
||||
getChannel(name, required = false) {
|
||||
const option = this._getTypedOption(name, ApplicationCommandOptionType.Channel, ['channel'], required);
|
||||
const option = this._getTypedOption(name, [ApplicationCommandOptionType.Channel], ['channel'], required);
|
||||
return option?.channel ?? null;
|
||||
}
|
||||
|
||||
@@ -157,7 +157,7 @@ class CommandInteractionOptionResolver {
|
||||
* @returns {?string} The value of the option, or null if not set and not required.
|
||||
*/
|
||||
getString(name, required = false) {
|
||||
const option = this._getTypedOption(name, ApplicationCommandOptionType.String, ['value'], required);
|
||||
const option = this._getTypedOption(name, [ApplicationCommandOptionType.String], ['value'], required);
|
||||
return option?.value ?? null;
|
||||
}
|
||||
|
||||
@@ -168,7 +168,7 @@ class CommandInteractionOptionResolver {
|
||||
* @returns {?number} The value of the option, or null if not set and not required.
|
||||
*/
|
||||
getInteger(name, required = false) {
|
||||
const option = this._getTypedOption(name, ApplicationCommandOptionType.Integer, ['value'], required);
|
||||
const option = this._getTypedOption(name, [ApplicationCommandOptionType.Integer], ['value'], required);
|
||||
return option?.value ?? null;
|
||||
}
|
||||
|
||||
@@ -179,7 +179,7 @@ class CommandInteractionOptionResolver {
|
||||
* @returns {?number} The value of the option, or null if not set and not required.
|
||||
*/
|
||||
getNumber(name, required = false) {
|
||||
const option = this._getTypedOption(name, ApplicationCommandOptionType.Number, ['value'], required);
|
||||
const option = this._getTypedOption(name, [ApplicationCommandOptionType.Number], ['value'], required);
|
||||
return option?.value ?? null;
|
||||
}
|
||||
|
||||
@@ -190,7 +190,12 @@ class CommandInteractionOptionResolver {
|
||||
* @returns {?User} The value of the option, or null if not set and not required.
|
||||
*/
|
||||
getUser(name, required = false) {
|
||||
const option = this._getTypedOption(name, ApplicationCommandOptionType.User, ['user'], required);
|
||||
const option = this._getTypedOption(
|
||||
name,
|
||||
[ApplicationCommandOptionType.User, ApplicationCommandOptionType.Mentionable],
|
||||
['user'],
|
||||
required,
|
||||
);
|
||||
return option?.user ?? null;
|
||||
}
|
||||
|
||||
@@ -201,7 +206,12 @@ class CommandInteractionOptionResolver {
|
||||
* The value of the option, or null if the user is not present in the guild or the option is not set.
|
||||
*/
|
||||
getMember(name) {
|
||||
const option = this._getTypedOption(name, ApplicationCommandOptionType.User, ['member'], false);
|
||||
const option = this._getTypedOption(
|
||||
name,
|
||||
[ApplicationCommandOptionType.User, ApplicationCommandOptionType.Mentionable],
|
||||
['member'],
|
||||
false,
|
||||
);
|
||||
return option?.member ?? null;
|
||||
}
|
||||
|
||||
@@ -212,7 +222,12 @@ class CommandInteractionOptionResolver {
|
||||
* @returns {?(Role|APIRole)} The value of the option, or null if not set and not required.
|
||||
*/
|
||||
getRole(name, required = false) {
|
||||
const option = this._getTypedOption(name, ApplicationCommandOptionType.Role, ['role'], required);
|
||||
const option = this._getTypedOption(
|
||||
name,
|
||||
[ApplicationCommandOptionType.Role, ApplicationCommandOptionType.Mentionable],
|
||||
['role'],
|
||||
required,
|
||||
);
|
||||
return option?.role ?? null;
|
||||
}
|
||||
|
||||
@@ -223,7 +238,7 @@ class CommandInteractionOptionResolver {
|
||||
* @returns {?Attachment} The value of the option, or null if not set and not required.
|
||||
*/
|
||||
getAttachment(name, required = false) {
|
||||
const option = this._getTypedOption(name, ApplicationCommandOptionType.Attachment, ['attachment'], required);
|
||||
const option = this._getTypedOption(name, [ApplicationCommandOptionType.Attachment], ['attachment'], required);
|
||||
return option?.attachment ?? null;
|
||||
}
|
||||
|
||||
@@ -237,7 +252,7 @@ class CommandInteractionOptionResolver {
|
||||
getMentionable(name, required = false) {
|
||||
const option = this._getTypedOption(
|
||||
name,
|
||||
ApplicationCommandOptionType.Mentionable,
|
||||
[ApplicationCommandOptionType.Mentionable],
|
||||
['user', 'member', 'role'],
|
||||
required,
|
||||
);
|
||||
@@ -252,7 +267,7 @@ class CommandInteractionOptionResolver {
|
||||
* The value of the option, or null if not set and not required.
|
||||
*/
|
||||
getMessage(name, required = false) {
|
||||
const option = this._getTypedOption(name, '_MESSAGE', ['message'], required);
|
||||
const option = this._getTypedOption(name, ['_MESSAGE'], ['message'], required);
|
||||
return option?.message ?? null;
|
||||
}
|
||||
|
||||
|
||||
@@ -168,7 +168,7 @@ class ForumChannel extends GuildChannel {
|
||||
|
||||
/**
|
||||
* Creates an invite to this guild channel.
|
||||
* @param {CreateInviteOptions} [options={}] The options for creating the invite
|
||||
* @param {InviteCreateOptions} [options={}] The options for creating the invite
|
||||
* @returns {Promise<Invite>}
|
||||
* @example
|
||||
* // Create an invite to a channel
|
||||
|
||||
@@ -737,7 +737,7 @@ class Guild extends AnonymousGuild {
|
||||
|
||||
/**
|
||||
* The data for editing a guild.
|
||||
* @typedef {Object} GuildEditData
|
||||
* @typedef {Object} GuildEditOptions
|
||||
* @property {string} [name] The name of the guild
|
||||
* @property {?GuildVerificationLevel} [verificationLevel] The verification level of the guild
|
||||
* @property {?GuildExplicitContentFilter} [explicitContentFilter] The level of the explicit content filter
|
||||
@@ -778,7 +778,7 @@ class Guild extends AnonymousGuild {
|
||||
|
||||
/**
|
||||
* Updates the guild with new information - e.g. a new name.
|
||||
* @param {GuildEditData} data The data to update the guild with
|
||||
* @param {GuildEditOptions} options The options to provide
|
||||
* @returns {Promise<Guild>}
|
||||
* @example
|
||||
* // Set the guild name
|
||||
@@ -788,50 +788,50 @@ class Guild extends AnonymousGuild {
|
||||
* .then(updated => console.log(`New guild name ${updated}`))
|
||||
* .catch(console.error);
|
||||
*/
|
||||
async edit(data) {
|
||||
async edit(options) {
|
||||
const _data = {};
|
||||
if (data.name) _data.name = data.name;
|
||||
if (typeof data.verificationLevel !== 'undefined') {
|
||||
_data.verification_level = data.verificationLevel;
|
||||
if (options.name) _data.name = options.name;
|
||||
if (typeof options.verificationLevel !== 'undefined') {
|
||||
_data.verification_level = options.verificationLevel;
|
||||
}
|
||||
if (typeof data.afkChannel !== 'undefined') {
|
||||
_data.afk_channel_id = this.client.channels.resolveId(data.afkChannel);
|
||||
if (typeof options.afkChannel !== 'undefined') {
|
||||
_data.afk_channel_id = this.client.channels.resolveId(options.afkChannel);
|
||||
}
|
||||
if (typeof data.systemChannel !== 'undefined') {
|
||||
_data.system_channel_id = this.client.channels.resolveId(data.systemChannel);
|
||||
if (typeof options.systemChannel !== 'undefined') {
|
||||
_data.system_channel_id = this.client.channels.resolveId(options.systemChannel);
|
||||
}
|
||||
if (data.afkTimeout) _data.afk_timeout = Number(data.afkTimeout);
|
||||
if (typeof data.icon !== 'undefined') _data.icon = await DataResolver.resolveImage(data.icon);
|
||||
if (data.owner) _data.owner_id = this.client.users.resolveId(data.owner);
|
||||
if (typeof data.splash !== 'undefined') _data.splash = await DataResolver.resolveImage(data.splash);
|
||||
if (typeof data.discoverySplash !== 'undefined') {
|
||||
_data.discovery_splash = await DataResolver.resolveImage(data.discoverySplash);
|
||||
if (options.afkTimeout) _data.afk_timeout = Number(options.afkTimeout);
|
||||
if (typeof options.icon !== 'undefined') _data.icon = await DataResolver.resolveImage(options.icon);
|
||||
if (options.owner) _data.owner_id = this.client.users.resolveId(options.owner);
|
||||
if (typeof options.splash !== 'undefined') _data.splash = await DataResolver.resolveImage(options.splash);
|
||||
if (typeof options.discoverySplash !== 'undefined') {
|
||||
_data.discovery_splash = await DataResolver.resolveImage(options.discoverySplash);
|
||||
}
|
||||
if (typeof data.banner !== 'undefined') _data.banner = await DataResolver.resolveImage(data.banner);
|
||||
if (typeof data.explicitContentFilter !== 'undefined') {
|
||||
_data.explicit_content_filter = data.explicitContentFilter;
|
||||
if (typeof options.banner !== 'undefined') _data.banner = await DataResolver.resolveImage(options.banner);
|
||||
if (typeof options.explicitContentFilter !== 'undefined') {
|
||||
_data.explicit_content_filter = options.explicitContentFilter;
|
||||
}
|
||||
if (typeof data.defaultMessageNotifications !== 'undefined') {
|
||||
_data.default_message_notifications = data.defaultMessageNotifications;
|
||||
if (typeof options.defaultMessageNotifications !== 'undefined') {
|
||||
_data.default_message_notifications = options.defaultMessageNotifications;
|
||||
}
|
||||
if (typeof data.systemChannelFlags !== 'undefined') {
|
||||
_data.system_channel_flags = SystemChannelFlagsBitField.resolve(data.systemChannelFlags);
|
||||
if (typeof options.systemChannelFlags !== 'undefined') {
|
||||
_data.system_channel_flags = SystemChannelFlagsBitField.resolve(options.systemChannelFlags);
|
||||
}
|
||||
if (typeof data.rulesChannel !== 'undefined') {
|
||||
_data.rules_channel_id = this.client.channels.resolveId(data.rulesChannel);
|
||||
if (typeof options.rulesChannel !== 'undefined') {
|
||||
_data.rules_channel_id = this.client.channels.resolveId(options.rulesChannel);
|
||||
}
|
||||
if (typeof data.publicUpdatesChannel !== 'undefined') {
|
||||
_data.public_updates_channel_id = this.client.channels.resolveId(data.publicUpdatesChannel);
|
||||
if (typeof options.publicUpdatesChannel !== 'undefined') {
|
||||
_data.public_updates_channel_id = this.client.channels.resolveId(options.publicUpdatesChannel);
|
||||
}
|
||||
if (typeof data.features !== 'undefined') {
|
||||
_data.features = data.features;
|
||||
if (typeof options.features !== 'undefined') {
|
||||
_data.features = options.features;
|
||||
}
|
||||
if (typeof data.description !== 'undefined') {
|
||||
_data.description = data.description;
|
||||
if (typeof options.description !== 'undefined') {
|
||||
_data.description = options.description;
|
||||
}
|
||||
if (typeof data.preferredLocale !== 'undefined') _data.preferred_locale = data.preferredLocale;
|
||||
if ('premiumProgressBarEnabled' in data) _data.premium_progress_bar_enabled = data.premiumProgressBarEnabled;
|
||||
const newData = await this.client.rest.patch(Routes.guild(this.id), { body: _data, reason: data.reason });
|
||||
if (typeof options.preferredLocale !== 'undefined') _data.preferred_locale = options.preferredLocale;
|
||||
if ('premiumProgressBarEnabled' in options) _data.premium_progress_bar_enabled = options.premiumProgressBarEnabled;
|
||||
const newData = await this.client.rest.patch(Routes.guild(this.id), { body: _data, reason: options.reason });
|
||||
return this.client.actions.GuildUpdate.handle(newData).updated;
|
||||
}
|
||||
|
||||
@@ -845,7 +845,7 @@ class Guild extends AnonymousGuild {
|
||||
|
||||
/**
|
||||
* Welcome screen edit data
|
||||
* @typedef {Object} WelcomeScreenEditData
|
||||
* @typedef {Object} WelcomeScreenEditOptions
|
||||
* @property {boolean} [enabled] Whether the welcome screen is enabled
|
||||
* @property {string} [description] The description for the welcome screen
|
||||
* @property {WelcomeChannelData[]} [welcomeChannels] The welcome channel data for the welcome screen
|
||||
@@ -869,7 +869,7 @@ class Guild extends AnonymousGuild {
|
||||
|
||||
/**
|
||||
* Updates the guild's welcome screen
|
||||
* @param {WelcomeScreenEditData} data Data to edit the welcome screen with
|
||||
* @param {WelcomeScreenEditOptions} options The options to provide
|
||||
* @returns {Promise<WelcomeScreen>}
|
||||
* @example
|
||||
* guild.editWelcomeScreen({
|
||||
@@ -883,8 +883,8 @@ class Guild extends AnonymousGuild {
|
||||
* ],
|
||||
* })
|
||||
*/
|
||||
async editWelcomeScreen(data) {
|
||||
const { enabled, description, welcomeChannels } = data;
|
||||
async editWelcomeScreen(options) {
|
||||
const { enabled, description, welcomeChannels } = options;
|
||||
const welcome_channels = welcomeChannels?.map(welcomeChannelData => {
|
||||
const emoji = this.emojis.resolve(welcomeChannelData.emoji);
|
||||
return {
|
||||
@@ -1204,6 +1204,17 @@ class Guild extends AnonymousGuild {
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets whether this guild's invites are disabled.
|
||||
* @param {boolean} [disabled=true] Whether the invites are disabled
|
||||
* @returns {Promise<Guild>}
|
||||
*/
|
||||
async disableInvites(disabled = true) {
|
||||
const features = this.features.filter(feature => feature !== GuildFeature.InvitesDisabled);
|
||||
if (disabled) features.push(GuildFeature.InvitesDisabled);
|
||||
return this.edit({ features });
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether this guild equals another guild. It compares all properties, so for most operations
|
||||
* it is advisable to just compare `guild.id === guild2.id` as it is much faster and is often
|
||||
|
||||
@@ -268,7 +268,7 @@ class GuildChannel extends BaseChannel {
|
||||
|
||||
/**
|
||||
* Edits the channel.
|
||||
* @param {GuildChannelEditOptions} data The new data for the channel
|
||||
* @param {GuildChannelEditOptions} options The options to provide
|
||||
* @returns {Promise<GuildChannel>}
|
||||
* @example
|
||||
* // Edit a channel
|
||||
@@ -276,8 +276,8 @@ class GuildChannel extends BaseChannel {
|
||||
* .then(console.log)
|
||||
* .catch(console.error);
|
||||
*/
|
||||
edit(data) {
|
||||
return this.guild.channels.edit(this, data);
|
||||
edit(options) {
|
||||
return this.guild.channels.edit(this, options);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -78,7 +78,7 @@ class GuildEmoji extends BaseGuildEmoji {
|
||||
|
||||
/**
|
||||
* Data for editing an emoji.
|
||||
* @typedef {Object} GuildEmojiEditData
|
||||
* @typedef {Object} GuildEmojiEditOptions
|
||||
* @property {string} [name] The name of the emoji
|
||||
* @property {Collection<Snowflake, Role>|RoleResolvable[]} [roles] Roles to restrict emoji to
|
||||
* @property {string} [reason] Reason for editing this emoji
|
||||
@@ -86,7 +86,7 @@ class GuildEmoji extends BaseGuildEmoji {
|
||||
|
||||
/**
|
||||
* Edits the emoji.
|
||||
* @param {GuildEmojiEditData} data The new data for the emoji
|
||||
* @param {GuildEmojiEditOptions} options The options to provide
|
||||
* @returns {Promise<GuildEmoji>}
|
||||
* @example
|
||||
* // Edit an emoji
|
||||
@@ -94,8 +94,8 @@ class GuildEmoji extends BaseGuildEmoji {
|
||||
* .then(e => console.log(`Edited emoji ${e}`))
|
||||
* .catch(console.error);
|
||||
*/
|
||||
edit(data) {
|
||||
return this.guild.emojis.edit(this.id, data);
|
||||
edit(options) {
|
||||
return this.guild.emojis.edit(this.id, options);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -307,11 +307,11 @@ class GuildMember extends Base {
|
||||
|
||||
/**
|
||||
* Edits this member.
|
||||
* @param {GuildMemberEditData} data The data to edit the member with
|
||||
* @param {GuildMemberEditOptions} options The options to provide
|
||||
* @returns {Promise<GuildMember>}
|
||||
*/
|
||||
edit(data) {
|
||||
return this.guild.members.edit(this, data);
|
||||
edit(options) {
|
||||
return this.guild.members.edit(this, options);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -240,7 +240,7 @@ class GuildScheduledEvent extends Base {
|
||||
|
||||
/**
|
||||
* Options used to create an invite URL to a {@link GuildScheduledEvent}
|
||||
* @typedef {CreateInviteOptions} CreateGuildScheduledEventInviteURLOptions
|
||||
* @typedef {InviteCreateOptions} GuildScheduledEventInviteURLCreateOptions
|
||||
* @property {GuildInvitableChannelResolvable} [channel] The channel to create the invite in.
|
||||
* <warn>This is required when the `entityType` of `GuildScheduledEvent` is
|
||||
* {@link GuildScheduledEventEntityType.External}, gets ignored otherwise</warn>
|
||||
@@ -248,7 +248,7 @@ class GuildScheduledEvent extends Base {
|
||||
|
||||
/**
|
||||
* Creates an invite URL to this guild scheduled event.
|
||||
* @param {CreateGuildScheduledEventInviteURLOptions} [options] The options to create the invite
|
||||
* @param {GuildScheduledEventInviteURLCreateOptions} [options] The options to create the invite
|
||||
* @returns {Promise<string>}
|
||||
*/
|
||||
async createInviteURL(options) {
|
||||
|
||||
@@ -155,14 +155,14 @@ class GuildTemplate extends Base {
|
||||
|
||||
/**
|
||||
* Options used to edit a guild template.
|
||||
* @typedef {Object} EditGuildTemplateOptions
|
||||
* @typedef {Object} GuildTemplateEditOptions
|
||||
* @property {string} [name] The name of this template
|
||||
* @property {string} [description] The description of this template
|
||||
*/
|
||||
|
||||
/**
|
||||
* Updates the metadata of this template.
|
||||
* @param {EditGuildTemplateOptions} [options] Options for editing the template
|
||||
* @param {GuildTemplateEditOptions} [options] Options for editing the template
|
||||
* @returns {Promise<GuildTemplate>}
|
||||
*/
|
||||
async edit({ name, description } = {}) {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
'use strict';
|
||||
|
||||
const { DiscordSnowflake } = require('@sapphire/snowflake');
|
||||
const { InteractionType } = require('discord-api-types/v10');
|
||||
const { DiscordjsError, ErrorCodes } = require('../errors');
|
||||
|
||||
@@ -21,6 +22,24 @@ class InteractionResponse {
|
||||
this.client = interaction.client;
|
||||
}
|
||||
|
||||
/**
|
||||
* The timestamp the interaction response was created at
|
||||
* @type {number}
|
||||
* @readonly
|
||||
*/
|
||||
get createdTimestamp() {
|
||||
return DiscordSnowflake.timestampFrom(this.id);
|
||||
}
|
||||
|
||||
/**
|
||||
* The time the interaction response was created at
|
||||
* @type {Date}
|
||||
* @readonly
|
||||
*/
|
||||
get createdAt() {
|
||||
return new Date(this.createdTimestamp);
|
||||
}
|
||||
|
||||
/**
|
||||
* Collects a single component interaction that passes the filter.
|
||||
* The Promise will reject if the time expires.
|
||||
|
||||
@@ -45,7 +45,7 @@ class InteractionWebhook {
|
||||
/**
|
||||
* Edits a message that was sent by this webhook.
|
||||
* @param {MessageResolvable|'@original'} message The message to edit
|
||||
* @param {string|MessagePayload|WebhookEditMessageOptions} options The options to provide
|
||||
* @param {string|MessagePayload|WebhookMessageEditOptions} options The options to provide
|
||||
* @returns {Promise<Message>} Returns the message edited by this webhook
|
||||
*/
|
||||
|
||||
|
||||
@@ -11,14 +11,14 @@ const Events = require('../util/Events');
|
||||
class MentionableSelectMenuInteraction extends MessageComponentInteraction {
|
||||
constructor(client, data) {
|
||||
super(client, data);
|
||||
const { resolved, values } = data.data;
|
||||
const { members, users, roles } = resolved ?? {};
|
||||
|
||||
/**
|
||||
* An array of the selected user and role ids
|
||||
* @type {Snowflake[]}
|
||||
*/
|
||||
this.values = data.data.values ?? [];
|
||||
|
||||
const { members, users, roles } = data.data.resolved ?? {};
|
||||
this.values = values ?? [];
|
||||
|
||||
/**
|
||||
* Collection of the selected users
|
||||
|
||||
@@ -287,7 +287,7 @@ module.exports = MessagePayload;
|
||||
|
||||
/**
|
||||
* A possible payload option.
|
||||
* @typedef {MessageCreateOptions|MessageEditOptions|WebhookCreateMessageOptions|WebhookEditMessageOptions|
|
||||
* @typedef {MessageCreateOptions|MessageEditOptions|WebhookMessageCreateOptions|WebhookMessageEditOptions|
|
||||
* InteractionReplyOptions|InteractionUpdateOptions} MessagePayloadOption
|
||||
*/
|
||||
|
||||
|
||||
@@ -207,7 +207,7 @@ class Role extends Base {
|
||||
|
||||
/**
|
||||
* Edits the role.
|
||||
* @param {EditRoleOptions} data The new data for the role
|
||||
* @param {RoleEditOptions} options The options to provide
|
||||
* @returns {Promise<Role>}
|
||||
* @example
|
||||
* // Edit a role
|
||||
@@ -215,8 +215,8 @@ class Role extends Base {
|
||||
* .then(updated => console.log(`Edited role name to ${updated.name}`))
|
||||
* .catch(console.error);
|
||||
*/
|
||||
edit(data) {
|
||||
return this.guild.roles.edit(this, data);
|
||||
edit(options) {
|
||||
return this.guild.roles.edit(this, options);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -10,19 +10,21 @@ const MessageComponentInteraction = require('./MessageComponentInteraction');
|
||||
class RoleSelectMenuInteraction extends MessageComponentInteraction {
|
||||
constructor(client, data) {
|
||||
super(client, data);
|
||||
const { resolved, values } = data.data;
|
||||
|
||||
/**
|
||||
* An array of the selected role ids
|
||||
* @type {Snowflake[]}
|
||||
*/
|
||||
this.values = data.data.values ?? [];
|
||||
this.values = values ?? [];
|
||||
|
||||
/**
|
||||
* Collection of the selected roles
|
||||
* @type {Collection<Snowflake, Role|APIRole>}
|
||||
*/
|
||||
this.roles = new Collection();
|
||||
for (const role of Object.values(data.data.resolved.roles)) {
|
||||
|
||||
for (const role of Object.values(resolved?.roles ?? {})) {
|
||||
this.roles.set(role.id, this.guild?.roles._add(role) ?? role);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -197,7 +197,7 @@ class Sticker extends Base {
|
||||
|
||||
/**
|
||||
* Data for editing a sticker.
|
||||
* @typedef {Object} GuildStickerEditData
|
||||
* @typedef {Object} GuildStickerEditOptions
|
||||
* @property {string} [name] The name of the sticker
|
||||
* @property {?string} [description] The description of the sticker
|
||||
* @property {string} [tags] The Discord name of a unicode emoji representing the sticker's expression
|
||||
@@ -206,7 +206,7 @@ class Sticker extends Base {
|
||||
|
||||
/**
|
||||
* Edits the sticker.
|
||||
* @param {GuildStickerEditData} data The new data for the sticker
|
||||
* @param {GuildStickerEditOptions} options The options to provide
|
||||
* @returns {Promise<Sticker>}
|
||||
* @example
|
||||
* // Update the name of a sticker
|
||||
@@ -214,8 +214,8 @@ class Sticker extends Base {
|
||||
* .then(s => console.log(`Updated the name of the sticker to ${s.name}`))
|
||||
* .catch(console.error);
|
||||
*/
|
||||
edit(data) {
|
||||
return this.guild.stickers.edit(this, data);
|
||||
edit(options) {
|
||||
return this.guild.stickers.edit(this, options);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -316,7 +316,7 @@ class ThreadChannel extends BaseChannel {
|
||||
|
||||
/**
|
||||
* The options used to edit a thread channel
|
||||
* @typedef {Object} ThreadEditData
|
||||
* @typedef {Object} ThreadEditOptions
|
||||
* @property {string} [name] The new name for the thread
|
||||
* @property {boolean} [archived] Whether the thread is archived
|
||||
* @property {ThreadAutoArchiveDuration} [autoArchiveDuration] The amount of time after which the thread
|
||||
@@ -332,7 +332,7 @@ class ThreadChannel extends BaseChannel {
|
||||
|
||||
/**
|
||||
* Edits this thread.
|
||||
* @param {ThreadEditData} data The new data for this thread
|
||||
* @param {ThreadEditOptions} options The options to provide
|
||||
* @returns {Promise<ThreadChannel>}
|
||||
* @example
|
||||
* // Edit a thread
|
||||
@@ -340,19 +340,19 @@ class ThreadChannel extends BaseChannel {
|
||||
* .then(editedThread => console.log(editedThread))
|
||||
* .catch(console.error);
|
||||
*/
|
||||
async edit(data) {
|
||||
async edit(options) {
|
||||
const newData = await this.client.rest.patch(Routes.channel(this.id), {
|
||||
body: {
|
||||
name: (data.name ?? this.name).trim(),
|
||||
archived: data.archived,
|
||||
auto_archive_duration: data.autoArchiveDuration,
|
||||
rate_limit_per_user: data.rateLimitPerUser,
|
||||
locked: data.locked,
|
||||
invitable: this.type === ChannelType.PrivateThread ? data.invitable : undefined,
|
||||
applied_tags: data.appliedTags,
|
||||
flags: 'flags' in data ? ChannelFlagsBitField.resolve(data.flags) : undefined,
|
||||
name: (options.name ?? this.name).trim(),
|
||||
archived: options.archived,
|
||||
auto_archive_duration: options.autoArchiveDuration,
|
||||
rate_limit_per_user: options.rateLimitPerUser,
|
||||
locked: options.locked,
|
||||
invitable: this.type === ChannelType.PrivateThread ? options.invitable : undefined,
|
||||
applied_tags: options.appliedTags,
|
||||
flags: 'flags' in options ? ChannelFlagsBitField.resolve(options.flags) : undefined,
|
||||
},
|
||||
reason: data.reason,
|
||||
reason: options.reason,
|
||||
});
|
||||
|
||||
return this.client.actions.ChannelUpdate.handle(newData).updated;
|
||||
|
||||
@@ -11,12 +11,13 @@ const Events = require('../util/Events');
|
||||
class UserSelectMenuInteraction extends MessageComponentInteraction {
|
||||
constructor(client, data) {
|
||||
super(client, data);
|
||||
const { resolved, values } = data.data;
|
||||
|
||||
/**
|
||||
* An array of the selected user ids
|
||||
* @type {Snowflake[]}
|
||||
*/
|
||||
this.values = data.data.values ?? [];
|
||||
this.values = values ?? [];
|
||||
|
||||
/**
|
||||
* Collection of the selected users
|
||||
@@ -30,24 +31,19 @@ class UserSelectMenuInteraction extends MessageComponentInteraction {
|
||||
*/
|
||||
this.members = new Collection();
|
||||
|
||||
for (const user of Object.values(data.data.resolved.users)) {
|
||||
for (const user of Object.values(resolved?.users ?? {})) {
|
||||
this.users.set(user.id, this.client.users._add(user));
|
||||
}
|
||||
|
||||
if (data.data.resolved.members) {
|
||||
for (const [id, member] of Object.entries(data.data.resolved.members)) {
|
||||
const user = data.data.resolved.users[id];
|
||||
if (!user) {
|
||||
this.client.emit(
|
||||
Events.Debug,
|
||||
`[UserSelectMenuInteraction] Received a member without a user, skipping ${id}`,
|
||||
);
|
||||
for (const [id, member] of Object.entries(resolved?.members ?? {})) {
|
||||
const user = resolved.users[id];
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
this.members.set(id, this.guild?.members._add({ user, ...member }) ?? { user, ...member });
|
||||
if (!user) {
|
||||
this.client.emit(Events.Debug, `[UserSelectMenuInteraction] Received a member without a user, skipping ${id}`);
|
||||
continue;
|
||||
}
|
||||
|
||||
this.members.set(id, this.guild?.members._add({ user, ...member }) ?? { user, ...member });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -208,7 +208,7 @@ class VoiceState extends Base {
|
||||
|
||||
/**
|
||||
* Data to edit the logged in user's own voice state with, when in a stage channel
|
||||
* @typedef {Object} VoiceStateEditData
|
||||
* @typedef {Object} VoiceStateEditOptions
|
||||
* @property {boolean} [requestToSpeak] Whether or not the client is requesting to become a speaker.
|
||||
* <info>Only available to the logged in user's own voice state.</info>
|
||||
* @property {boolean} [suppressed] Whether or not the user should be suppressed.
|
||||
@@ -216,35 +216,35 @@ class VoiceState extends Base {
|
||||
|
||||
/**
|
||||
* Edits this voice state. Currently only available when in a stage channel
|
||||
* @param {VoiceStateEditData} data The data to edit the voice state with
|
||||
* @param {VoiceStateEditOptions} options The options to provide
|
||||
* @returns {Promise<VoiceState>}
|
||||
*/
|
||||
async edit(data) {
|
||||
async edit(options) {
|
||||
if (this.channel?.type !== ChannelType.GuildStageVoice) throw new DiscordjsError(ErrorCodes.VoiceNotStageChannel);
|
||||
|
||||
const target = this.client.user.id === this.id ? '@me' : this.id;
|
||||
|
||||
if (target !== '@me' && typeof data.requestToSpeak !== 'undefined') {
|
||||
if (target !== '@me' && typeof options.requestToSpeak !== 'undefined') {
|
||||
throw new DiscordjsError(ErrorCodes.VoiceStateNotOwn);
|
||||
}
|
||||
|
||||
if (!['boolean', 'undefined'].includes(typeof data.requestToSpeak)) {
|
||||
if (!['boolean', 'undefined'].includes(typeof options.requestToSpeak)) {
|
||||
throw new DiscordjsTypeError(ErrorCodes.VoiceStateInvalidType, 'requestToSpeak');
|
||||
}
|
||||
|
||||
if (!['boolean', 'undefined'].includes(typeof data.suppressed)) {
|
||||
if (!['boolean', 'undefined'].includes(typeof options.suppressed)) {
|
||||
throw new DiscordjsTypeError(ErrorCodes.VoiceStateInvalidType, 'suppressed');
|
||||
}
|
||||
|
||||
await this.client.rest.patch(Routes.guildVoiceState(this.guild.id, target), {
|
||||
body: {
|
||||
channel_id: this.channelId,
|
||||
request_to_speak_timestamp: data.requestToSpeak
|
||||
request_to_speak_timestamp: options.requestToSpeak
|
||||
? new Date().toISOString()
|
||||
: data.requestToSpeak === false
|
||||
: options.requestToSpeak === false
|
||||
? null
|
||||
: undefined,
|
||||
suppress: data.suppressed,
|
||||
suppress: options.suppressed,
|
||||
},
|
||||
});
|
||||
return this;
|
||||
|
||||
@@ -126,7 +126,7 @@ class Webhook {
|
||||
|
||||
/**
|
||||
* Options that can be passed into send.
|
||||
* @typedef {BaseMessageOptions} WebhookCreateMessageOptions
|
||||
* @typedef {BaseMessageOptions} WebhookMessageCreateOptions
|
||||
* @property {boolean} [tts=false] Whether the message should be spoken aloud
|
||||
* @property {MessageFlags} [flags] Which flags to set for the message.
|
||||
* <info>Only the {@link MessageFlags.SuppressEmbeds} flag can be set.</info>
|
||||
@@ -139,7 +139,7 @@ class Webhook {
|
||||
|
||||
/**
|
||||
* Options that can be passed into editMessage.
|
||||
* @typedef {BaseMessageOptions} WebhookEditMessageOptions
|
||||
* @typedef {BaseMessageOptions} WebhookMessageEditOptions
|
||||
* @property {Attachment[]} [attachments] Attachments to send with the message
|
||||
* @property {Snowflake} [threadId] The id of the thread this message belongs to
|
||||
* <info>For interaction webhooks, this property is ignored</info>
|
||||
@@ -156,7 +156,7 @@ class Webhook {
|
||||
|
||||
/**
|
||||
* Sends a message with this webhook.
|
||||
* @param {string|MessagePayload|WebhookCreateMessageOptions} options The options to provide
|
||||
* @param {string|MessagePayload|WebhookMessageCreateOptions} options The options to provide
|
||||
* @returns {Promise<Message>}
|
||||
* @example
|
||||
* // Send a basic message
|
||||
@@ -261,7 +261,7 @@ class Webhook {
|
||||
|
||||
/**
|
||||
* Options used to edit a {@link Webhook}.
|
||||
* @typedef {Object} WebhookEditData
|
||||
* @typedef {Object} WebhookEditOptions
|
||||
* @property {string} [name=this.name] The new name for the webhook
|
||||
* @property {?(BufferResolvable)} [avatar] The new avatar for the webhook
|
||||
* @property {GuildTextChannelResolvable} [channel] The new channel for the webhook
|
||||
@@ -270,7 +270,7 @@ class Webhook {
|
||||
|
||||
/**
|
||||
* Edits this webhook.
|
||||
* @param {WebhookEditData} options Options for editing the webhook
|
||||
* @param {WebhookEditOptions} options Options for editing the webhook
|
||||
* @returns {Promise<Webhook>}
|
||||
*/
|
||||
async edit({ name = this.name, avatar, channel, reason }) {
|
||||
@@ -322,7 +322,7 @@ class Webhook {
|
||||
/**
|
||||
* Edits a message that was sent by this webhook.
|
||||
* @param {MessageResolvable|'@original'} message The message to edit
|
||||
* @param {string|MessagePayload|WebhookEditMessageOptions} options The options to provide
|
||||
* @param {string|MessagePayload|WebhookMessageEditOptions} options The options to provide
|
||||
* @returns {Promise<Message>} Returns the message edited by this webhook
|
||||
*/
|
||||
async editMessage(message, options) {
|
||||
|
||||
@@ -138,7 +138,7 @@ class InteractionResponses {
|
||||
|
||||
/**
|
||||
* Options that can be passed into {@link InteractionResponses#editReply}.
|
||||
* @typedef {WebhookEditMessageOptions} InteractionEditReplyOptions
|
||||
* @typedef {WebhookMessageEditOptions} InteractionEditReplyOptions
|
||||
* @property {MessageResolvable|'@original'} [message='@original'] The response to edit
|
||||
*/
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@ class UserFlagsBitField extends BitField {
|
||||
/**
|
||||
* Numeric user flags.
|
||||
* @type {UserFlags}
|
||||
* @memberof UserFlagsBitField
|
||||
*/
|
||||
static Flags = UserFlags;
|
||||
}
|
||||
|
||||
112
packages/discord.js/typings/index.d.ts
vendored
112
packages/discord.js/typings/index.d.ts
vendored
@@ -419,6 +419,7 @@ export class ApplicationCommand<PermissionsFetchType = {}> extends Base {
|
||||
>;
|
||||
public type: ApplicationCommandType;
|
||||
public version: Snowflake;
|
||||
public nsfw: boolean;
|
||||
public delete(): Promise<ApplicationCommand<PermissionsFetchType>>;
|
||||
public edit(data: Partial<ApplicationCommandData>): Promise<ApplicationCommand<PermissionsFetchType>>;
|
||||
public setName(name: string): Promise<ApplicationCommand<PermissionsFetchType>>;
|
||||
@@ -555,6 +556,8 @@ export class InteractionResponse<Cached extends boolean = boolean> {
|
||||
public interaction: Interaction<WrapBooleanCache<Cached>>;
|
||||
public client: Client;
|
||||
public id: Snowflake;
|
||||
public get createdAt(): Date;
|
||||
public get createdTimestamp(): number;
|
||||
public awaitMessageComponent<T extends MessageComponentType>(
|
||||
options?: AwaitMessageCollectorOptionsParams<T, Cached>,
|
||||
): Promise<MappedInteractionTypes<Cached>[T]>;
|
||||
@@ -597,7 +600,7 @@ export class BaseGuildTextChannel extends TextBasedChannelMixin(GuildChannel, tr
|
||||
public nsfw: boolean;
|
||||
public threads: GuildTextThreadManager<AllowedThreadTypeForTextChannel | AllowedThreadTypeForNewsChannel>;
|
||||
public topic: string | null;
|
||||
public createInvite(options?: CreateInviteOptions): Promise<Invite>;
|
||||
public createInvite(options?: InviteCreateOptions): Promise<Invite>;
|
||||
public fetchInvites(cache?: boolean): Promise<Collection<string, Invite>>;
|
||||
public setDefaultAutoArchiveDuration(
|
||||
defaultAutoArchiveDuration: ThreadAutoArchiveDuration,
|
||||
@@ -616,7 +619,7 @@ export class BaseGuildVoiceChannel extends GuildChannel {
|
||||
public rtcRegion: string | null;
|
||||
public bitrate: number;
|
||||
public userLimit: number;
|
||||
public createInvite(options?: CreateInviteOptions): Promise<Invite>;
|
||||
public createInvite(options?: InviteCreateOptions): Promise<Invite>;
|
||||
public setRTCRegion(rtcRegion: string | null, reason?: string): Promise<this>;
|
||||
public fetchInvites(cache?: boolean): Promise<Collection<string, Invite>>;
|
||||
}
|
||||
@@ -977,7 +980,7 @@ export class ClientUser extends User {
|
||||
public mfaEnabled: boolean;
|
||||
public get presence(): ClientPresence;
|
||||
public verified: boolean;
|
||||
public edit(data: ClientUserEditData): Promise<this>;
|
||||
public edit(options: ClientUserEditOptions): Promise<this>;
|
||||
public setActivity(options?: ActivityOptions): ClientPresence;
|
||||
public setActivity(name: string, options?: ActivityOptions): ClientPresence;
|
||||
public setAFK(afk?: boolean, shardId?: number | number[]): ClientPresence;
|
||||
@@ -1089,13 +1092,13 @@ export class CommandInteractionOptionResolver<Cached extends CacheType = CacheTy
|
||||
private _subcommand: string | null;
|
||||
private _getTypedOption(
|
||||
name: string,
|
||||
type: ApplicationCommandOptionType,
|
||||
allowedTypes: ApplicationCommandOptionType[],
|
||||
properties: (keyof ApplicationCommandOption)[],
|
||||
required: true,
|
||||
): CommandInteractionOption<Cached>;
|
||||
private _getTypedOption(
|
||||
name: string,
|
||||
type: ApplicationCommandOptionType,
|
||||
allowedTypes: ApplicationCommandOptionType[],
|
||||
properties: (keyof ApplicationCommandOption)[],
|
||||
required: boolean,
|
||||
): CommandInteractionOption<Cached> | null;
|
||||
@@ -1265,8 +1268,8 @@ export class Guild extends AnonymousGuild {
|
||||
public createTemplate(name: string, description?: string): Promise<GuildTemplate>;
|
||||
public delete(): Promise<Guild>;
|
||||
public discoverySplashURL(options?: ImageURLOptions): string | null;
|
||||
public edit(data: GuildEditData): Promise<Guild>;
|
||||
public editWelcomeScreen(data: WelcomeScreenEditData): Promise<WelcomeScreen>;
|
||||
public edit(options: GuildEditOptions): Promise<Guild>;
|
||||
public editWelcomeScreen(options: WelcomeScreenEditOptions): Promise<WelcomeScreen>;
|
||||
public equals(guild: Guild): boolean;
|
||||
public fetchAuditLogs<T extends GuildAuditLogsResolvable = null>(
|
||||
options?: GuildAuditLogsFetchOptions<T>,
|
||||
@@ -1281,6 +1284,7 @@ export class Guild extends AnonymousGuild {
|
||||
public fetchWidget(): Promise<Widget>;
|
||||
public fetchWidgetSettings(): Promise<GuildWidgetSettings>;
|
||||
public leave(): Promise<Guild>;
|
||||
public disableInvites(disabled?: boolean): Promise<Guild>;
|
||||
public setAFKChannel(afkChannel: VoiceChannelResolvable | null, reason?: string): Promise<Guild>;
|
||||
public setAFKTimeout(afkTimeout: number, reason?: string): Promise<Guild>;
|
||||
public setBanner(banner: BufferResolvable | Base64Resolvable | null, reason?: string): Promise<Guild>;
|
||||
@@ -1387,7 +1391,7 @@ export abstract class GuildChannel extends BaseChannel {
|
||||
public get viewable(): boolean;
|
||||
public clone(options?: GuildChannelCloneOptions): Promise<this>;
|
||||
public delete(reason?: string): Promise<this>;
|
||||
public edit(data: GuildChannelEditOptions): Promise<this>;
|
||||
public edit(options: GuildChannelEditOptions): Promise<this>;
|
||||
public equals(channel: GuildChannel): boolean;
|
||||
public lockPermissions(): Promise<this>;
|
||||
public permissionsFor(memberOrRole: GuildMember | Role, checkAdmin?: boolean): Readonly<PermissionsBitField>;
|
||||
@@ -1412,7 +1416,7 @@ export class GuildEmoji extends BaseGuildEmoji {
|
||||
public get roles(): GuildEmojiRoleManager;
|
||||
public get url(): string;
|
||||
public delete(reason?: string): Promise<GuildEmoji>;
|
||||
public edit(data: GuildEmojiEditData): Promise<GuildEmoji>;
|
||||
public edit(options: GuildEmojiEditOptions): Promise<GuildEmoji>;
|
||||
public equals(other: GuildEmoji | unknown): boolean;
|
||||
public fetchAuthor(): Promise<User>;
|
||||
public setName(name: string, reason?: string): Promise<GuildEmoji>;
|
||||
@@ -1453,7 +1457,7 @@ export class GuildMember extends PartialTextBasedChannel(Base) {
|
||||
public createDM(force?: boolean): Promise<DMChannel>;
|
||||
public deleteDM(): Promise<DMChannel>;
|
||||
public displayAvatarURL(options?: ImageURLOptions): string;
|
||||
public edit(data: GuildMemberEditData): Promise<GuildMember>;
|
||||
public edit(options: GuildMemberEditOptions): Promise<GuildMember>;
|
||||
public isCommunicationDisabled(): this is GuildMember & {
|
||||
communicationDisabledUntilTimestamp: number;
|
||||
readonly communicationDisabledUntil: Date;
|
||||
@@ -1515,7 +1519,7 @@ export class GuildScheduledEvent<S extends GuildScheduledEventStatus = GuildSche
|
||||
public get url(): string;
|
||||
public image: string | null;
|
||||
public coverImageURL(options?: Readonly<BaseImageURLOptions>): string | null;
|
||||
public createInviteURL(options?: CreateGuildScheduledEventInviteURLOptions): Promise<string>;
|
||||
public createInviteURL(options?: GuildScheduledEventInviteURLCreateOptions): Promise<string>;
|
||||
public edit<T extends GuildScheduledEventSetStatusArg<S>>(
|
||||
options: GuildScheduledEventEditOptions<S, T>,
|
||||
): Promise<GuildScheduledEvent<T>>;
|
||||
@@ -1558,7 +1562,7 @@ export class GuildTemplate extends Base {
|
||||
public unSynced: boolean | null;
|
||||
public createGuild(name: string, icon?: BufferResolvable | Base64Resolvable): Promise<Guild>;
|
||||
public delete(): Promise<GuildTemplate>;
|
||||
public edit(options?: EditGuildTemplateOptions): Promise<GuildTemplate>;
|
||||
public edit(options?: GuildTemplateEditOptions): Promise<GuildTemplate>;
|
||||
public sync(): Promise<GuildTemplate>;
|
||||
public static GuildTemplatesPattern: RegExp;
|
||||
}
|
||||
@@ -1680,7 +1684,7 @@ export class BaseInteraction<Cached extends CacheType = CacheType> extends Base
|
||||
public isMessageContextMenuCommand(): this is MessageContextMenuCommandInteraction<Cached>;
|
||||
public isModalSubmit(): this is ModalSubmitInteraction<Cached>;
|
||||
public isUserContextMenuCommand(): this is UserContextMenuCommandInteraction<Cached>;
|
||||
/** @deprecated Use {@link BaseInteraction#isStringSelectMenu} instead */
|
||||
/** @deprecated Use {@link isStringSelectMenu} instead. */
|
||||
public isSelectMenu(): this is StringSelectMenuInteraction<Cached>;
|
||||
public isAnySelectMenu(): this is AnySelectMenuInteraction<Cached>;
|
||||
public isStringSelectMenu(): this is StringSelectMenuInteraction<Cached>;
|
||||
@@ -1729,7 +1733,7 @@ export class InteractionWebhook extends PartialWebhookMixin() {
|
||||
public send(options: string | MessagePayload | InteractionReplyOptions): Promise<Message>;
|
||||
public editMessage(
|
||||
message: MessageResolvable | '@original',
|
||||
options: string | MessagePayload | WebhookEditMessageOptions,
|
||||
options: string | MessagePayload | WebhookMessageEditOptions,
|
||||
): Promise<Message>;
|
||||
public fetchMessage(message: Snowflake | '@original'): Promise<Message>;
|
||||
}
|
||||
@@ -2055,8 +2059,8 @@ export class MessageMentions<InGuild extends boolean = boolean> {
|
||||
export type MessagePayloadOption =
|
||||
| MessageCreateOptions
|
||||
| MessageEditOptions
|
||||
| WebhookCreateMessageOptions
|
||||
| WebhookEditMessageOptions
|
||||
| WebhookMessageCreateOptions
|
||||
| WebhookMessageEditOptions
|
||||
| InteractionReplyOptions
|
||||
| InteractionUpdateOptions;
|
||||
|
||||
@@ -2253,7 +2257,7 @@ export class ForumChannel extends TextBasedChannelMixin(GuildChannel, true, [
|
||||
public setAvailableTags(tags: GuildForumTagData[], reason?: string): Promise<this>;
|
||||
public setDefaultReactionEmoji(emojiId: DefaultReactionEmoji | null, reason?: string): Promise<this>;
|
||||
public setDefaultThreadRateLimitPerUser(rateLimit: number, reason?: string): Promise<this>;
|
||||
public createInvite(options?: CreateInviteOptions): Promise<Invite>;
|
||||
public createInvite(options?: InviteCreateOptions): Promise<Invite>;
|
||||
public fetchInvites(cache?: boolean): Promise<Collection<string, Invite>>;
|
||||
public setDefaultAutoArchiveDuration(
|
||||
defaultAutoArchiveDuration: ThreadAutoArchiveDuration,
|
||||
@@ -2381,7 +2385,7 @@ export class Role extends Base {
|
||||
public icon: string | null;
|
||||
public unicodeEmoji: string | null;
|
||||
public delete(reason?: string): Promise<Role>;
|
||||
public edit(data: EditRoleOptions): Promise<Role>;
|
||||
public edit(options: RoleEditOptions): Promise<Role>;
|
||||
public equals(role: Role): boolean;
|
||||
public iconURL(options?: ImageURLOptions): string | null;
|
||||
public permissionsIn(
|
||||
@@ -2703,7 +2707,7 @@ export class Sticker extends Base {
|
||||
public fetch(): Promise<Sticker>;
|
||||
public fetchPack(): Promise<StickerPack | null>;
|
||||
public fetchUser(): Promise<User | null>;
|
||||
public edit(data?: GuildStickerEditData): Promise<Sticker>;
|
||||
public edit(options?: GuildStickerEditOptions): Promise<Sticker>;
|
||||
public delete(reason?: string): Promise<Sticker>;
|
||||
public equals(other: Sticker | unknown): boolean;
|
||||
}
|
||||
@@ -2881,7 +2885,7 @@ export class ThreadChannel<Forum extends boolean = boolean> extends TextBasedCha
|
||||
public type: ThreadChannelType;
|
||||
public get unarchivable(): boolean;
|
||||
public delete(reason?: string): Promise<this>;
|
||||
public edit(data: ThreadEditData): Promise<AnyThreadChannel>;
|
||||
public edit(options: ThreadEditOptions): Promise<AnyThreadChannel>;
|
||||
public join(): Promise<AnyThreadChannel>;
|
||||
public leave(): Promise<AnyThreadChannel>;
|
||||
public permissionsFor(memberOrRole: GuildMember | Role, checkAdmin?: boolean): Readonly<PermissionsBitField>;
|
||||
@@ -3052,12 +3056,12 @@ export interface MappedComponentTypes {
|
||||
[ComponentType.TextInput]: TextInputComponent;
|
||||
}
|
||||
|
||||
export interface CreateChannelOptions {
|
||||
export interface ChannelCreateOptions {
|
||||
allowFromUnknownGuild?: boolean;
|
||||
fromInteraction?: boolean;
|
||||
}
|
||||
|
||||
export function createChannel(client: Client<true>, data: APIChannel, options?: CreateChannelOptions): Channel;
|
||||
export function createChannel(client: Client<true>, data: APIChannel, options?: ChannelCreateOptions): Channel;
|
||||
|
||||
export function createComponent<T extends keyof MappedComponentTypes>(
|
||||
data: APIMessageComponent & { type: T },
|
||||
@@ -3162,7 +3166,7 @@ export class VoiceState extends Base {
|
||||
public setChannel(channel: GuildVoiceChannelResolvable | null, reason?: string): Promise<GuildMember>;
|
||||
public setRequestToSpeak(request?: boolean): Promise<this>;
|
||||
public setSuppressed(suppressed?: boolean): Promise<this>;
|
||||
public edit(data: VoiceStateEditData): Promise<this>;
|
||||
public edit(options: VoiceStateEditOptions): Promise<this>;
|
||||
}
|
||||
|
||||
export class Webhook extends WebhookMixin() {
|
||||
@@ -3205,10 +3209,10 @@ export class Webhook extends WebhookMixin() {
|
||||
|
||||
public editMessage(
|
||||
message: MessageResolvable,
|
||||
options: string | MessagePayload | WebhookEditMessageOptions,
|
||||
options: string | MessagePayload | WebhookMessageEditOptions,
|
||||
): Promise<Message>;
|
||||
public fetchMessage(message: Snowflake, options?: WebhookFetchMessageOptions): Promise<Message>;
|
||||
public send(options: string | MessagePayload | WebhookCreateMessageOptions): Promise<Message>;
|
||||
public send(options: string | MessagePayload | WebhookMessageCreateOptions): Promise<Message>;
|
||||
}
|
||||
|
||||
export class WebhookClient extends WebhookMixin(BaseClient) {
|
||||
@@ -3218,10 +3222,10 @@ export class WebhookClient extends WebhookMixin(BaseClient) {
|
||||
public token: string;
|
||||
public editMessage(
|
||||
message: MessageResolvable,
|
||||
options: string | MessagePayload | WebhookEditMessageOptions,
|
||||
options: string | MessagePayload | WebhookMessageEditOptions,
|
||||
): Promise<APIMessage>;
|
||||
public fetchMessage(message: Snowflake, options?: WebhookFetchMessageOptions): Promise<APIMessage>;
|
||||
public send(options: string | MessagePayload | WebhookCreateMessageOptions): Promise<APIMessage>;
|
||||
public send(options: string | MessagePayload | WebhookMessageCreateOptions): Promise<APIMessage>;
|
||||
}
|
||||
|
||||
export class WebSocketManager extends EventEmitter {
|
||||
@@ -3785,7 +3789,7 @@ export class GuildEmojiManager extends BaseGuildEmojiManager {
|
||||
public fetch(id?: undefined, options?: BaseFetchOptions): Promise<Collection<Snowflake, GuildEmoji>>;
|
||||
public fetchAuthor(emoji: EmojiResolvable): Promise<User>;
|
||||
public delete(emoji: EmojiResolvable, reason?: string): Promise<void>;
|
||||
public edit(emoji: EmojiResolvable, data: GuildEmojiEditData): Promise<GuildEmoji>;
|
||||
public edit(emoji: EmojiResolvable, options: GuildEmojiEditOptions): Promise<GuildEmoji>;
|
||||
}
|
||||
|
||||
export class GuildEmojiRoleManager extends DataManager<Snowflake, Role, RoleResolvable> {
|
||||
@@ -3824,7 +3828,7 @@ export class GuildMemberManager extends CachedManager<Snowflake, GuildMember, Gu
|
||||
): Promise<GuildMember | null>;
|
||||
public add(user: UserResolvable, options: AddGuildMemberOptions): Promise<GuildMember>;
|
||||
public ban(user: UserResolvable, options?: BanOptions): Promise<GuildMember | User | Snowflake>;
|
||||
public edit(user: UserResolvable, data: GuildMemberEditData): Promise<GuildMember>;
|
||||
public edit(user: UserResolvable, options: GuildMemberEditOptions): Promise<GuildMember>;
|
||||
public fetch(
|
||||
options: UserResolvable | FetchMemberOptions | (FetchMembersOptions & { user: UserResolvable }),
|
||||
): Promise<GuildMember>;
|
||||
@@ -3852,7 +3856,7 @@ export class GuildBanManager extends CachedManager<Snowflake, GuildBan, GuildBan
|
||||
export class GuildInviteManager extends DataManager<string, Invite, InviteResolvable> {
|
||||
private constructor(guild: Guild, iterable?: Iterable<RawInviteData>);
|
||||
public guild: Guild;
|
||||
public create(channel: GuildInvitableChannelResolvable, options?: CreateInviteOptions): Promise<Invite>;
|
||||
public create(channel: GuildInvitableChannelResolvable, options?: InviteCreateOptions): Promise<Invite>;
|
||||
public fetch(options: InviteResolvable | FetchInviteOptions): Promise<Invite>;
|
||||
public fetch(options?: FetchInvitesOptions): Promise<Collection<string, Invite>>;
|
||||
public delete(invite: InviteResolvable, reason?: string): Promise<Invite>;
|
||||
@@ -3885,7 +3889,7 @@ export class GuildStickerManager extends CachedManager<Snowflake, Sticker, Stick
|
||||
private constructor(guild: Guild, iterable?: Iterable<RawStickerData>);
|
||||
public guild: Guild;
|
||||
public create(options: GuildStickerCreateOptions): Promise<Sticker>;
|
||||
public edit(sticker: StickerResolvable, data?: GuildStickerEditData): Promise<Sticker>;
|
||||
public edit(sticker: StickerResolvable, data?: GuildStickerEditOptions): Promise<Sticker>;
|
||||
public delete(sticker: StickerResolvable, reason?: string): Promise<void>;
|
||||
public fetch(id: Snowflake, options?: BaseFetchOptions): Promise<Sticker>;
|
||||
public fetch(id?: Snowflake, options?: BaseFetchOptions): Promise<Collection<Snowflake, Sticker>>;
|
||||
@@ -3990,8 +3994,8 @@ export class RoleManager extends CachedManager<Snowflake, Role, RoleResolvable>
|
||||
public botRoleFor(user: UserResolvable): Role | null;
|
||||
public fetch(id: Snowflake, options?: BaseFetchOptions): Promise<Role | null>;
|
||||
public fetch(id?: undefined, options?: BaseFetchOptions): Promise<Collection<Snowflake, Role>>;
|
||||
public create(options?: CreateRoleOptions): Promise<Role>;
|
||||
public edit(role: RoleResolvable, options: EditRoleOptions): Promise<Role>;
|
||||
public create(options?: RoleCreateOptions): Promise<Role>;
|
||||
public edit(role: RoleResolvable, options: RoleEditOptions): Promise<Role>;
|
||||
public delete(role: RoleResolvable, reason?: string): Promise<void>;
|
||||
public setPosition(role: RoleResolvable, position: number, options?: SetRolePositionOptions): Promise<Role>;
|
||||
public setPositions(rolePositions: readonly RolePosition[]): Promise<Guild>;
|
||||
@@ -4116,11 +4120,11 @@ export interface PartialWebhookFields {
|
||||
deleteMessage(message: MessageResolvable | APIMessage | '@original', threadId?: Snowflake): Promise<void>;
|
||||
editMessage(
|
||||
message: MessageResolvable | '@original',
|
||||
options: string | MessagePayload | WebhookEditMessageOptions,
|
||||
options: string | MessagePayload | WebhookMessageEditOptions,
|
||||
): Promise<APIMessage | Message>;
|
||||
fetchMessage(message: Snowflake | '@original', options?: WebhookFetchMessageOptions): Promise<APIMessage | Message>;
|
||||
send(
|
||||
options: string | MessagePayload | InteractionReplyOptions | WebhookCreateMessageOptions,
|
||||
options: string | MessagePayload | InteractionReplyOptions | WebhookMessageCreateOptions,
|
||||
): Promise<APIMessage | Message>;
|
||||
}
|
||||
|
||||
@@ -4128,7 +4132,7 @@ export interface WebhookFields extends PartialWebhookFields {
|
||||
get createdAt(): Date;
|
||||
get createdTimestamp(): number;
|
||||
delete(reason?: string): Promise<void>;
|
||||
edit(options: WebhookEditData): Promise<Webhook>;
|
||||
edit(options: WebhookEditOptions): Promise<Webhook>;
|
||||
sendSlackMessage(body: unknown): Promise<boolean>;
|
||||
}
|
||||
|
||||
@@ -4166,6 +4170,7 @@ export interface BaseApplicationCommandData {
|
||||
nameLocalizations?: LocalizationMap;
|
||||
dmPermission?: boolean;
|
||||
defaultMemberPermissions?: PermissionResolvable | null;
|
||||
nsfw?: boolean;
|
||||
}
|
||||
|
||||
export interface AttachmentData {
|
||||
@@ -4733,7 +4738,7 @@ export interface ClientPresenceStatusData {
|
||||
desktop?: ClientPresenceStatus;
|
||||
}
|
||||
|
||||
export interface ClientUserEditData {
|
||||
export interface ClientUserEditOptions {
|
||||
username?: string;
|
||||
avatar?: BufferResolvable | Base64Resolvable | null;
|
||||
}
|
||||
@@ -4939,15 +4944,15 @@ export enum Status {
|
||||
Resuming = 8,
|
||||
}
|
||||
|
||||
export interface CreateGuildScheduledEventInviteURLOptions extends CreateInviteOptions {
|
||||
export interface GuildScheduledEventInviteURLCreateOptions extends InviteCreateOptions {
|
||||
channel?: GuildInvitableChannelResolvable;
|
||||
}
|
||||
|
||||
export interface CreateRoleOptions extends RoleData {
|
||||
export interface RoleCreateOptions extends RoleData {
|
||||
reason?: string;
|
||||
}
|
||||
|
||||
export interface EditRoleOptions extends RoleData {
|
||||
export interface RoleEditOptions extends RoleData {
|
||||
reason?: string;
|
||||
}
|
||||
|
||||
@@ -4966,7 +4971,7 @@ export interface CrosspostedChannel {
|
||||
|
||||
export type DateResolvable = Date | number | string;
|
||||
|
||||
export interface EditGuildTemplateOptions {
|
||||
export interface GuildTemplateEditOptions {
|
||||
name?: string;
|
||||
description?: string;
|
||||
}
|
||||
@@ -5356,7 +5361,7 @@ export interface GuildWidgetSettings {
|
||||
channel: TextChannel | NewsChannel | VoiceBasedChannel | ForumChannel | null;
|
||||
}
|
||||
|
||||
export interface GuildEditData {
|
||||
export interface GuildEditOptions {
|
||||
name?: string;
|
||||
verificationLevel?: GuildVerificationLevel | null;
|
||||
explicitContentFilter?: GuildExplicitContentFilter | null;
|
||||
@@ -5386,7 +5391,7 @@ export interface GuildEmojiCreateOptions {
|
||||
reason?: string;
|
||||
}
|
||||
|
||||
export interface GuildEmojiEditData {
|
||||
export interface GuildEmojiEditOptions {
|
||||
name?: string;
|
||||
roles?: Collection<Snowflake, Role> | RoleResolvable[];
|
||||
reason?: string;
|
||||
@@ -5400,14 +5405,14 @@ export interface GuildStickerCreateOptions {
|
||||
reason?: string;
|
||||
}
|
||||
|
||||
export interface GuildStickerEditData {
|
||||
export interface GuildStickerEditOptions {
|
||||
name?: string;
|
||||
description?: string | null;
|
||||
tags?: string;
|
||||
reason?: string;
|
||||
}
|
||||
|
||||
export interface GuildMemberEditData {
|
||||
export interface GuildMemberEditOptions {
|
||||
nick?: string | null;
|
||||
roles?: Collection<Snowflake, Role> | readonly RoleResolvable[];
|
||||
mute?: boolean;
|
||||
@@ -5567,7 +5572,7 @@ export interface InviteGenerationOptions {
|
||||
|
||||
export type GuildInvitableChannelResolvable = TextChannel | VoiceChannel | NewsChannel | StageChannel | Snowflake;
|
||||
|
||||
export interface CreateInviteOptions {
|
||||
export interface InviteCreateOptions {
|
||||
temporary?: boolean;
|
||||
maxAge?: number;
|
||||
maxUses?: number;
|
||||
@@ -6109,7 +6114,7 @@ export interface GuildForumThreadCreateOptions extends StartThreadOptions {
|
||||
appliedTags?: Snowflake[];
|
||||
}
|
||||
|
||||
export interface ThreadEditData {
|
||||
export interface ThreadEditOptions {
|
||||
name?: string;
|
||||
archived?: boolean;
|
||||
autoArchiveDuration?: ThreadAutoArchiveDuration;
|
||||
@@ -6136,7 +6141,7 @@ export type VoiceBasedChannelTypes = VoiceBasedChannel['type'];
|
||||
|
||||
export type VoiceChannelResolvable = Snowflake | VoiceChannel;
|
||||
|
||||
export interface VoiceStateEditData {
|
||||
export interface VoiceStateEditOptions {
|
||||
requestToSpeak?: boolean;
|
||||
suppressed?: boolean;
|
||||
}
|
||||
@@ -6154,18 +6159,18 @@ export interface WebhookClientDataURL {
|
||||
|
||||
export type WebhookClientOptions = Pick<ClientOptions, 'allowedMentions' | 'rest'>;
|
||||
|
||||
export interface WebhookEditData {
|
||||
export interface WebhookEditOptions {
|
||||
name?: string;
|
||||
avatar?: BufferResolvable | null;
|
||||
channel?: GuildTextChannelResolvable;
|
||||
reason?: string;
|
||||
}
|
||||
|
||||
export interface WebhookEditMessageOptions extends Omit<MessageEditOptions, 'flags'> {
|
||||
export interface WebhookMessageEditOptions extends Omit<MessageEditOptions, 'flags'> {
|
||||
threadId?: Snowflake;
|
||||
}
|
||||
|
||||
export interface InteractionEditReplyOptions extends WebhookEditMessageOptions {
|
||||
export interface InteractionEditReplyOptions extends WebhookMessageEditOptions {
|
||||
message?: MessageResolvable | '@original';
|
||||
}
|
||||
|
||||
@@ -6173,7 +6178,7 @@ export interface WebhookFetchMessageOptions {
|
||||
threadId?: Snowflake;
|
||||
}
|
||||
|
||||
export interface WebhookCreateMessageOptions extends Omit<MessageCreateOptions, 'nonce' | 'reply' | 'stickers'> {
|
||||
export interface WebhookMessageCreateOptions extends Omit<MessageCreateOptions, 'nonce' | 'reply' | 'stickers'> {
|
||||
username?: string;
|
||||
avatarURL?: string;
|
||||
threadId?: Snowflake;
|
||||
@@ -6209,7 +6214,7 @@ export interface WelcomeChannelData {
|
||||
emoji?: EmojiIdentifierResolvable;
|
||||
}
|
||||
|
||||
export interface WelcomeScreenEditData {
|
||||
export interface WelcomeScreenEditOptions {
|
||||
enabled?: boolean;
|
||||
description?: string;
|
||||
welcomeChannels?: WelcomeChannelData[];
|
||||
@@ -6265,5 +6270,6 @@ export type InternalDiscordGatewayAdapterCreator = (
|
||||
// External
|
||||
export * from 'discord-api-types/v10';
|
||||
export * from '@discordjs/builders';
|
||||
export * from '@discordjs/formatters';
|
||||
export * from '@discordjs/rest';
|
||||
export * from '@discordjs/util';
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
"devDependencies": {
|
||||
"@favware/cliff-jumper": "^1.9.0",
|
||||
"@types/jsdoc-to-markdown": "^7.0.3",
|
||||
"@types/node": "16.18.3",
|
||||
"@types/node": "16.18.4",
|
||||
"cross-env": "^7.0.3",
|
||||
"eslint": "^8.28.0",
|
||||
"eslint-config-neon": "^0.1.40",
|
||||
|
||||
5
packages/formatters/.cliff-jumperrc.json
Normal file
5
packages/formatters/.cliff-jumperrc.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"name": "formatters",
|
||||
"org": "discordjs",
|
||||
"packagePath": "packages/formatters"
|
||||
}
|
||||
3
packages/formatters/.eslintrc.json
Normal file
3
packages/formatters/.eslintrc.json
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"extends": "../../.eslintrc.json"
|
||||
}
|
||||
27
packages/formatters/.gitignore
vendored
Normal file
27
packages/formatters/.gitignore
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
# Packages
|
||||
node_modules/
|
||||
|
||||
# Log files
|
||||
logs/
|
||||
*.log
|
||||
npm-debug.log*
|
||||
|
||||
# Runtime data
|
||||
pids
|
||||
*.pid
|
||||
*.seed
|
||||
|
||||
# Env
|
||||
.env
|
||||
|
||||
# Dist
|
||||
dist/
|
||||
typings/
|
||||
docs/**/*
|
||||
!docs/index.json
|
||||
!docs/README.md
|
||||
|
||||
# Miscellaneous
|
||||
.tmp/
|
||||
coverage/
|
||||
tsconfig.tsbuildinfo
|
||||
1
packages/formatters/.lintstagedrc.js
Normal file
1
packages/formatters/.lintstagedrc.js
Normal file
@@ -0,0 +1 @@
|
||||
module.exports = require('../../.lintstagedrc.json');
|
||||
8
packages/formatters/.prettierignore
Normal file
8
packages/formatters/.prettierignore
Normal file
@@ -0,0 +1,8 @@
|
||||
# Autogenerated
|
||||
CHANGELOG.md
|
||||
.turbo
|
||||
dist/
|
||||
docs/**/*
|
||||
!docs/index.yml
|
||||
!docs/README.md
|
||||
coverage/
|
||||
1
packages/formatters/.prettierrc.js
Normal file
1
packages/formatters/.prettierrc.js
Normal file
@@ -0,0 +1 @@
|
||||
module.exports = require('../../.prettierrc.json');
|
||||
191
packages/formatters/LICENSE
Normal file
191
packages/formatters/LICENSE
Normal file
@@ -0,0 +1,191 @@
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
Copyright 2021 Noel Buechler
|
||||
Copyright 2021 Vlad Frangu
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
80
packages/formatters/README.md
Normal file
80
packages/formatters/README.md
Normal file
@@ -0,0 +1,80 @@
|
||||
<div align="center">
|
||||
<br />
|
||||
<p>
|
||||
<a href="https://discord.js.org"><img src="https://discord.js.org/static/logo.svg" width="546" alt="discord.js" /></a>
|
||||
</p>
|
||||
<br />
|
||||
<p>
|
||||
<a href="https://discord.gg/djs"><img src="https://img.shields.io/discord/222078108977594368?color=5865F2&logo=discord&logoColor=white" alt="Discord server" /></a>
|
||||
<a href="https://www.npmjs.com/package/@discordjs/formatters"><img src="https://img.shields.io/npm/v/@discordjs/formatters.svg?maxAge=3600" alt="npm version" /></a>
|
||||
<a href="https://www.npmjs.com/package/@discordjs/formatters"><img src="https://img.shields.io/npm/dt/@discordjs/formatters.svg?maxAge=3600" alt="npm downloads" /></a>
|
||||
<a href="https://github.com/discordjs/discord.js/actions"><img src="https://github.com/discordjs/discord.js/actions/workflows/test.yml/badge.svg" alt="Build status" /></a>
|
||||
<a href="https://codecov.io/gh/discordjs/discord.js" ><img src="https://codecov.io/gh/discordjs/discord.js/branch/main/graph/badge.svg?precision=2&flag=formatters" alt="Code coverage" /></a>
|
||||
</p>
|
||||
<p>
|
||||
<a href="https://vercel.com/?utm_source=discordjs&utm_campaign=oss"><img src="https://raw.githubusercontent.com/discordjs/discord.js/main/.github/powered-by-vercel.svg" alt="Vercel" /></a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
## About
|
||||
|
||||
`@discordjs/formatters` set of functions to format strings for Discord.
|
||||
|
||||
## Installation
|
||||
|
||||
**Node.js 16.9.0 or newer is required.**
|
||||
|
||||
```sh-session
|
||||
npm install @discordjs/formatters
|
||||
yarn add @discordjs/formatters
|
||||
pnpm add @discordjs/formatters
|
||||
```
|
||||
|
||||
## Example usage
|
||||
|
||||
````ts
|
||||
import { codeBlock } from '@discordjs/formatters';
|
||||
|
||||
const formattedCode = codeBlock('hello world!');
|
||||
console.log(formattedCode);
|
||||
|
||||
// Prints:
|
||||
// ```
|
||||
// hello world!
|
||||
// ```
|
||||
````
|
||||
|
||||
## Links
|
||||
|
||||
- [Website][website] ([source][website-source])
|
||||
- [Documentation][documentation]
|
||||
- [Guide][guide] ([source][guide-source])
|
||||
See also the [Update Guide][guide-update], including updated and removed items in the library.
|
||||
- [discord.js Discord server][discord]
|
||||
- [Discord API Discord server][discord-api]
|
||||
- [GitHub][source]
|
||||
- [npm][npm]
|
||||
- [Related libraries][related-libs]
|
||||
|
||||
## Contributing
|
||||
|
||||
Before creating an issue, please ensure that it hasn't already been reported/suggested, and double-check the
|
||||
[documentation][documentation].
|
||||
See [the contribution guide][contributing] if you'd like to submit a PR.
|
||||
|
||||
## Help
|
||||
|
||||
If you don't understand something in the documentation, you are experiencing problems, or you just need a gentle nudge in the right direction, please don't hesitate to join our official [discord.js Server][discord].
|
||||
|
||||
[website]: https://discord.js.org/
|
||||
[website-source]: https://github.com/discordjs/discord.js/tree/main/apps/website
|
||||
[documentation]: https://discord.js.org/
|
||||
[guide]: https://discordjs.guide/
|
||||
[guide-source]: https://github.com/discordjs/guide
|
||||
[guide-update]: https://discordjs.guide/additional-info/changes-in-v14.html
|
||||
[discord]: https://discord.gg/djs
|
||||
[discord-api]: https://discord.gg/discord-api
|
||||
[source]: https://github.com/discordjs/discord.js/tree/main/packages/formatters
|
||||
[npm]: https://www.npmjs.com/package/@discordjs/formatters
|
||||
[related-libs]: https://discord.com/developers/docs/topics/community-resources#libraries
|
||||
[contributing]: https://github.com/discordjs/discord.js/blob/main/.github/CONTRIBUTING.md
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user