---
sidebar_position: 5
---
# First Event Module
We will dissect a basic event module.
:::tip
TLDR: event modules are event listeners. there are three types EventType.Discord, EventType.Sern, EventType.External
:::
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
```javascript
exports.default = eventModule({
type: EventType.Sern,
plugins : [],
name: 'module.activate',
execute(event) {
console.log(event);
}
})
```
```typescript
export default eventModule({
type: EventType.Sern,
plugins : [],
name: 'module.activate', //name of event.
execute(event) {
console.log(event);
}
})
```
Like command modules, the `type` property denotes what kind of event it is, which
can be found [here](https://sern.dev/docs/api/enums/EventType).
To view what each of these properties mean in depth, visit the [official documentation](https://sern.dev/docs/api/enums/EventType).
## External
In version 2 & 3, any dependency that you have passed into makeDependencies can be registered here as well.
```ts title="src/index.ts"
await makeDependencies({
build: root => root.add({
eventlistener: single(() => new EventEmitter())
})
})
```
```ts title="events/myevent.ts"
export default eventModule({
type: EventType.External,
emitter: 'eventlistener',
execute: (args) => {
console.log('Got event from eventlistener: ', args);
}
})
```