Components

Creating Polls

In Seyfert, the ability to create polls is just around the corner! This section will show the basic creation of polls, events, and examples.

To receive poll events, new intents are required.

This is an expanded section of the configuration file.

export default config.bot({
   //... other options
   intents: ['GuildMessagePolls', 'DirectMessagePolls'],
});

Receiving Events

There are currently 2 events for polls: messagePollVoteAdd and messagePollVoteRemove.

If you don't have the specified intents, the bot won't be able to receive poll events.

This is tied to the section on event creation.

import { createEvent } from 'seyfert';
 
export default createEvent({
    data: { name: 'messagePollVoteAdd' },
    run: (data) => {
        // You can do whatever you want with the data
        console.log(`The user: ${data.userId} added a vote to the poll: ${data.messageId}`);
    },
});

End of Event

To check when a poll ends, use the messageUpdate event.

Here's a quick example that edits the message when a poll is completed:

import { createEvent } from 'seyfert';
 
export default createEvent({
    data: { name: 'messageUpdate' },
    // This is [newMessage, oldMessage]
    // But in this example, we only need newMessage
    run: ([newMessage]) => {
        if (newMessage.poll?.results?.isFinalized) {
            console.log(`The poll with the id: ${newMessage.id} has ended`)
        }
    },
});

Commands

Quick examples of how to create a poll and how to end it.

The data obtained from polls seems to be unstable. Consider reading the official documentation for more information.

Proceed with caution.

This goes along with the Commands section.

Let's assume you have the following directory structure:

src
commands
index.ts
seyfert.config.mjs
package.json
tsconfig.json
import { AutoLoad, Declare, Command } from 'seyfert';
 
@Declare({
    name: 'poll',
    description: 'Poll command!',
})
@AutoLoad()
export default class PollCommand extends Command {}

On this page