# Events

## Prerequisites

To use events, you must have an understanding of the event admin role. See [Changing Role](https://docs.eventcord.xyz/configuration#change-role) for more help.

### What are Event Admin Roles?

The event admin role is the role you give to people who you trust to run your events. Eventcord checks the role using the role name. event admin roles do **NOT** identify who can join the event, only the people who start, stop, or manage the event.

## Event Types

There are currently two types of events: karaoke and general. They are described below.

{% tabs %}
{% tab title="Karaoke" %}
Karaoke events work in regular voice channels and stage channels. In stage channels, the bot will invite members to speak and remove them as needed. In voice channels, the bot will mute everyone who is not singing and unmute them when the singer is done.

{% hint style="info" %}
The bot requires the **mute members** permission for karaoke events to work as intended
{% endhint %}
{% endtab %}

{% tab title="General" %}
General events are for events on your server that require a basic queue. Utilizing the same code as the karaoke queue, but with the removal of the voice channel aspect. Some uses are gaming events that have a specific list of players (may include a bracket system in the future), but you can use it for almost anything!
{% endtab %}
{% endtabs %}

## Event Scopes

Events work on a text channel basis. Each event requires a text channel not being used by another event. Karaoke events require a voice channel not being used by another event in addition to the text channel.

## Groups

People can group up into groups of up to 4 within an event. This allows for squads, or duets/trios in karaoke

### Max Group Size

The maximum group size for an event can be set using **/groupsize** followed by a value between 1 and 4.

| **Command**                  | **Function**                        | **Event Admin Role Needed?** |
| ---------------------------- | ----------------------------------- | ---------------------------- |
| /groupsize \<max group size> | Set the max group size for an event | Yes                          |

## Starting and Ending Events

Events are started and ended to manage when people can add themselves to the event. These commands can only be used by people with the [event admin role.](#what-are-event-admin-roles)

### Starting Events

To start an event, simply use **/start** in the text channel you want to start an event in. You can set a custom event message by typing your message after the command (e.g. **/start Hello guys!**). You can mention a channel to start an event in another text channel (e.g. **/start #events-zone**).

### Ending Events

To end an event, simply use **/end** in the text channel which is being used by an active event. You can mention a channel to end an event in another text channel (e.g. **/end #events-zone**).

{% hint style="info" %}
The event admin role can be changed at anytime (see[ changing roles](https://docs.eventcord.xyz/configuration#change-role))
{% endhint %}

## Joining and Leaving the Event

### Joining Events

To join an event, use **/join** in a text channel being used by an event. To join a friend in a group, you can mention them while using the join command (e.g. **/join @danclay**).

### Leaving Events

To leave an event, use **/leave**. If you are in a group, this will only take you out of the event, not your friends.

## Viewing the Event Positions

To view the queue, use **/positions**.

| **Command** | **Function**                    | **Event Admin Role Needed?** |
| ----------- | ------------------------------- | ---------------------------- |
| /positions  | Shows you the event's positions | No                           |

## Cycling The Event

The person who is currently up can cycle the event using **/cycle**. In karaoke events, this will also unmute all members who were muted. People with the event admin role can always use this command to skip the person who is currently up.

| **Command** | **Function**                      | **Event Admin Role Needed?**                          |
| ----------- | --------------------------------- | ----------------------------------------------------- |
| /cycle      | Cycles the event one step forward | No, but Event Admins can use this command at anytime. |

### Auto Cycle

Eventcord can automatically cycle your event with a simple command. This is useful if you want to set a time limit on how long a member can be in event position 0.

| **Command**                                                | **Function**                  | **Event Admin Role Needed?** |
| ---------------------------------------------------------- | ----------------------------- | ---------------------------- |
| /autocycle \<time between cycles (e.g. 1m 30s) or disable> | Automatically cycle the event | Yes                          |

## Managing the Event

People with the event admin role can manage the queues effortlessly using simple commands.

{% hint style="info" %}
Some event management functions are available via the [bot dashboard](https://d.eventcord.xyz)
{% endhint %}

| **Command**                           | **Function**                                                                                                                                                            | **Example**                                                                                                                                     | **Event Admin Role Needed?** |
| ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- |
| /push <@user>\<queue position> \[new] | Pushes the mentioned member  to the queue spot placed in the placeholder.                                                                                               | If I wanted to move @danclay to queue spot 2, I would use **/push @danclay 2** Type "new" at the end as a shortcut to push into a new position. | Yes                          |
| /remove <@user>                       | Removes the mentioned member from the queue                                                                                                                             | If I wanted to remove @danclay from the queue, I would use **/remove @danclay**                                                                 | Yes                          |
| /cycle                                | Cycles the queue                                                                                                                                                        |                                                                                                                                                 | Yes (unless you are up)      |
| /lock                                 | Lock and unlocks the queue                                                                                                                                              |                                                                                                                                                 | Yes                          |
| /autocycle \<time or event position>  | Automatically cycles the event on the interval specified unless the event is cycled manually. This is useful to set time limits or cycle if the event becomes inactive. | ;autocycle 1m 30s                                                                                                                               | Yes                          |
| /groupsize \<max group size>          | Set the maximum size of groups for this event. This defaults to 4.                                                                                                      | ;groupsize 1                                                                                                                                    | Yes                          |
| /oneround                             | *(Demo command)* Automatically removes members after the event is cycled                                                                                                |                                                                                                                                                 | Yes                          |

## Vote Kick

Anyone in an event may start a vote to kick other members from the event. The members will only be kicked if a certain threshold of votes is met. This command is meant to help the event to self moderate.

### Starting a Vote Kick

You can either start a vote kick for kicking a list of members or a certain event position.

{% tabs %}
{% tab title="Kick specific members" %}
Use **/votekick** followed by mentions of the member you wish to start a vote to kick.
{% endtab %}

{% tab title="Kick everyone from an event position" %}
Use **`/votekick`** followed by the number of the position you wish to kick.

**Examples**

* /votekick 1
* /votekick 0
  {% endtab %}
  {% endtabs %}

### Disabling Vote Kick

If members of your server are abusing the vote kick feature, you can disable it using **/config server votekick**

## Karaoke Events

Karaoke queues have special features and commands that cannot be used during event queues.

### Using Stage Channels

If you have a very large server, stage channels may be easier to use when running events on the server. Stage channels work very similarly to regular events except the bot invites users who are ready to sing and removed them when they indicate they are done. It is suggested you make your event admin role the stage moderator role in the stage channel so they can manage the event and speak in the stage channel. Read more about stage channels on the [official Discord helpdesk](https://support.discord.com/hc/en-us/articles/1500005513722-Stage-Channels-FAQ)

{% embed url="<https://eventcord.xyz/i/aGvWBt.mp4>" %}
Video showing the creation of a stage channel
{% endembed %}

### Auto Mute

Auto mute will automatically mute users who are not singing in the channel designated upon the starting of the session. To mute the users, the person who is up can use **/ready**. It may take a little bit of time for Eventcord to mute everyone in the channel if the channel has a large number of people. Users will be unmuted upon the **/cycle** command being used. Eventcord will also manage muting of people who join or leave the channel while someone is singing.

| **Command** | **Function**                                                            | **Event Admin Role Needed?**                          |
| ----------- | ----------------------------------------------------------------------- | ----------------------------------------------------- |
| /ready      | Mutes users in the channel who are not up to sing                       | No                                                    |
| /cycle      | Unmutes users in the channel and [cycles the queue](#cycling-the-queue) | No, but Queue Admins can use this command at anytime. |

Eventcord also manages the muting of people who join or leave the channel. Here is what Eventcord will do:

{% tabs %}
{% tab title="Join Voice Channel" %}
Eventcord will mute the user who joins the voice channel while someone is singing.
{% endtab %}

{% tab title="Change Voice Channel" %}
Eventcord will unmute people who change voice channels if it has permission.&#x20;
{% endtab %}

{% tab title="Disconnect from Voice" %}
Kariari cannot unmute people at the moment to disconnect directly from the channel. To get around this, Eventcord will keep note of who is put into this situation and will unmute them once they join **ANY** voice channel on your guild where Eventcord has permission to unmute.
{% endtab %}
{% endtabs %}

Eventcord will also respect server mutes made by staff, and will not remove them. Eventcord will keep tabs of who was server muted before muting people. Upon unmuting, these people will not be unmuted, and will stay muted until staff unmutes them.

{% hint style="warning" %}
Auto mute requires the **Mute Members** permission (see [permissions](https://docs.eventcord.xyz/faq#why-does-kariari-require-the-permissions-listed))
{% endhint %}
