mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-10 00:23:30 +01:00
fd4ba5eaba66898699127fc0d5f0ab52c18e3db0
* feat: initial AutoMod commit * types: Typo in class name Co-authored-by: Jonathan <54381371+axisiscool@users.noreply.github.com> * refactor: move things around * refactor: remove undocumented property * chore: add new intents to issue form * feat: add initial basic manager * feat(AutoModRule): add new properties * feat: add events * feat(GuildAuditLog): cache rules * refactor: move JSDoc to where it is actually used * refactor(AutoModRule): add `_patch()` method * feat(AutoModRuleManager): add resolvers * feat(Sweepers): add new manager * types: nullify first parameter of `autoModerationRuleUpdate` * types: add manager to `Caches` * docs(AutoModRule): update `metadata` docstring * feat: add execution event * fix(AutoModActionExecution): export class * refactor(AutoModRule): `triggerType` is not modifiable * docs(AutoModRule): link class * feat: add trigger metadata definitions * docs(AutoModRule): typos * feat(AutoModRule): action metadata * types: Proper casing of name Co-authored-by: MateoDeveloper <79017590+Mateo-tem@users.noreply.github.com> * refactor: only patch data if exists * types: `preset` is an array * types(AutoModRuleActionMetadata): nullify all * feat(AutoModRuleManager): add `fetch()` * docs(AutoModRule): tweak some wording * docs(AutoModRule): use "array" over "list" * docs(AutoModRuleResolvable): fix union * types: adjust some names * feat(AutoModRuleManager): add `create()` * feat(AutoModRuleManager): add `delete()` * refactor: prefer full auto moderation name * docs(AutoModerationRuleManager): fix a fetch example * refactor(Sweepers): alphabetise methods * chore: remove testing * fix(AutoModerationRuleCreateOptions): add `reason` * fix: typo for `presets` * fix(AutoModerationRuleCreateOptions): `actions` is required * fix(AutoModerationRuleManager): handle properties that are unrequired * feat(AutoModerationRuleManager): add `edit()` * feat(GuildAuditLogsEntry): add auto moderation rules * refactor: prefer "AutoModerationActionExecutionAction" * refactor: annotate todos and doc fixes * feat(AutoModerationRule): add guild getter * docs(AutoModerationRule): rule -> auto moderation rule * docs(AutoModerationRuleEditOptions): `eventType` is optional * feat(AutoModerationRule): add helpers * docs: random string updates * chore: add TODOs * feat(AutoModerationActionExecution): add helpers * feat: support role and channel resolvables * chore: high priority todo to keep me in solitary * refactor(AutoModerationActionMetadataOptions): allow resolvables * chore: tidy up from merge * docs(AutoModerationRule): document extension * feat: export `AutoModerationRuleManager` * chore(ActionsManager): add new actions * chore: add to websocket index * refactor(AutoModerationActionExecution): send the guild across * docs(AutoModerationActionExecution): typo * docs(AutoModerationRule): deduplicate a word * docs(Guild): dot * test: add some basic tests * docs(AutoModerationRuleManager): fetch is optional * docs(AutoModerationActionExecution): prefer non-links * types: `presets` is an array of numbers * docs(AutoModerationRuleEditOptions): `name` is optional * docs(AutoModerationRule): fix type for `exemptChannels` * docs(AutoModerationRuleUpdateAction): remove "object" * feat: add `allow_list` * fix(GuildAuditLogsEntry): pass guild * docs(AutoModerationRuleManager): correct fetch example * chore: prettier * refactor: remove unneeded optional chaining operator * feat: add mention limit * docs(AutoModerationRuleManager): document new requirement * refactor: conform to message content intent * docs: document permission for event * docs: refactor intent message * docs: dot * docs: remove string in link * refactor: document upstream changes * fix(AutoModerationRuleDelete): Correct event fire Co-authored-by: GoldenAngel <50855202+GoldenAngel2@users.noreply.github.com> * feat(AutoModerationRule): Add `setMentionTotalLimit()` helper method * feat(AuditLogEntries): add new extra fields * types: add `guild` in constructors * types: update typings * refactor(AutoModerationRuleManager): `&&` shorthand * types: remove leftover type * chore: types * docs: update API types * docs: Tweak guild wording Co-authored-by: Aura Román <kyradiscord@gmail.com> * feat: add regular expression matching * docs: update `allowList` wording * refactor: deduplicate `guildId` Co-authored-by: Jonathan <54381371+axisiscool@users.noreply.github.com> Co-authored-by: MateoDeveloper <79017590+Mateo-tem@users.noreply.github.com> Co-authored-by: GoldenAngel <50855202+GoldenAngel2@users.noreply.github.com> Co-authored-by: Aura Román <kyradiscord@gmail.com>
About
discord.js is a powerful Node.js module that allows you to easily interact with the Discord API.
- Object-oriented
- Predictable abstractions
- Performant
- 100% coverage of the Discord API
Installation
Node.js 16.9.0 or newer is required.
npm install discord.js
yarn add discord.js
pnpm add discord.js
Optional packages
- zlib-sync for WebSocket data compression and inflation (
npm install zlib-sync) - erlpack for significantly faster WebSocket data (de)serialisation (
npm install discord/erlpack) - bufferutil for a much faster WebSocket connection (
npm install bufferutil) - utf-8-validate in combination with
bufferutilfor much faster WebSocket processing (npm install utf-8-validate) - @discordjs/voice for interacting with the Discord Voice API (
npm install @discordjs/voice)
Example usage
Install discord.js:
npm install discord.js
yarn add discord.js
pnpm add discord.js
Register a slash command against the Discord API:
const { REST, Routes } = require('discord.js');
const commands = [
{
name: 'ping',
description: 'Replies with Pong!',
},
];
const rest = new REST({ version: '10' }).setToken(TOKEN);
(async () => {
try {
console.log('Started refreshing application (/) commands.');
await rest.put(Routes.applicationCommands(CLIENT_ID), { body: commands });
console.log('Successfully reloaded application (/) commands.');
} catch (error) {
console.error(error);
}
})();
Afterwards we can create a quite simple example bot:
const { Client, GatewayIntentBits } = require('discord.js');
const client = new Client({ intents: [GatewayIntentBits.Guilds] });
client.on('ready', () => {
console.log(`Logged in as ${client.user.tag}!`);
});
client.on('interactionCreate', async (interaction) => {
if (!interaction.isChatInputCommand()) return;
if (interaction.commandName === 'ping') {
await interaction.reply('Pong!');
}
});
client.login(TOKEN);
Links
- Website (source)
- Documentation
- Guide (source) See also the Update Guide, including updated and removed items in the library.
- discord.js Discord server
- Discord API Discord server
- GitHub
- npm
- Related libraries
Extensions
Contributing
Before creating an issue, please ensure that it hasn't already been reported/suggested, and double-check the
documentation.
See the contribution guide 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.
Description
Languages
TypeScript
61.1%
JavaScript
28.5%
MDX
10.1%
CSS
0.2%