clashofclans-events
Version:
A Simple JavaScript Clash Of Clan Event based library that tracks Donation, Player Join and Left, Clan Activities.
276 lines (222 loc) • 7.56 kB
Markdown
<p align="center">
<a href="" rel="noopener">
<img width=200px height=200px src="https://clashforever.online/clashforever.png" alt="Project logo"></a>
</p>
<h3 align="center">clashofclans-events</h3>
<div align="center">
[](https://github.com/MJ-Shashank/clashofclans-events)
[](https://github.com/MJ-Shashank/clashofclans-events/blob/master/LICENSE)
</div>
<p align="center">A Simple JavaScript Clash Of Clan Event based library that tracks Donation, Player Join and Left, Clan Activities.
<br>
</p>
## Installation
You can install `clashofclans-events` using npm:
```
npm install clashofclans-events
```
## Step 1: Configuration
There are 2 arguments options and events, `options : { ratelimit, tokens, sync }` and `events : { donationEvent, clanEvent, playerJoin, playerLeft, playerPromote, playerDemote }`.
Note: Set `true` only if events are required.
```
const Client = require('clashofclans-events');
const Coc = new Client({
ratelimit: 10, // default is 10 events/sec
tokens: ['<token>'],
sync: 120 // default sync of clans in seconds
}, {
playerJoin: true, // default all events are false
playerLeft: true,
donationEvent: true,
clanEvent: true,
playerPromote: true,
playerDemote: true
});
```
## Step 2: Initialization
Initialize the tracker by calling `init()` function and pass `{ Array.<string> }` tags.
```
Coc.init(['<tag1>', '<tag2>', ...]);
```
You can Add/Delete clans from/to tracker.
```
// Add a clan
Coc.add('<tag>');
// Delete a clan
Coc.delete('<tag>');
```
## Step 3: Listeners/Events
### List of Events
- [donationEvent](#donationEvent)
- [clanEvent](#clanEvent)
- [playerJoin](#playerJoin)
- [playerLeft](#playerLeft)
- [playerPromote](#playerPromote)
- [playerDemote](#playerDemote)
- [error](#error)
#### 'donationEvent' <a name = "donationEvent"></a>
This event listens to troops recieved and donated from players in clan.
```
Coc.on('donationEvent', (message) => {
console.log(message);
});
```
Output:
```
{ name: 'Indian Hounds',
tag: '#V88CRPU',
badgeUrls:
{ small:
'https://api-assets.clashofclans.com/badges/70/oaygM0AU0VupNHITpoIcnWW9a6YMG-houO7GUmuYGlg.png',
large:
'https://api-assets.clashofclans.com/badges/512/oaygM0AU0VupNHITpoIcnWW9a6YMG-houO7GUmuYGlg.png',
medium:
'https://api-assets.clashofclans.com/badges/200/oaygM0AU0VupNHITpoIcnWW9a6YMG-houO7GUmuYGlg.png' },
members: 44,
type: 'open',
donated:
[ { name: '♠️Shey_xoOR♠️',
tag: '#GCG0LV90',
troops: 20,
league: [Object] },
{ name: 'merdo',
tag: '#280RQ28UR',
troops: 20,
league: [Object] } ],
received:
[ { name: 'el solitario',
tag: '#LCCPP8J9Y',
troops: 50,
league: [Object] },
{ name: 'rudra', tag: '#LLQQPJQJC', troops: 5, league: [Object] } ],
mismatch: [ { troops: 5 } ] }
```
#### 'clanEvent' <a name = "clanEvent"></a>
This event listens to Clan activities ie change of description, location, required trophies, clan level promote, clan entry, war frequecy, war-log visbility, war league, badge change.
`eventType` : `descriptionChange, locationChange, requiredTrophiesChange, clanLevelChange, typeChange, warFrequencyChange, isWarLogPublicChange, warLeagueChange, badgeUrlsChange`
```
Coc.on('clanEvent', (message) => {
console.log(message);
});
```
Output:
```
{ name: 'Indian Hounds',
tag: '#V88CRPU',
badgeUrls:
{ small:
'https://api-assets.clashofclans.com/badges/70/oaygM0AU0VupNHITpoIcnWW9a6YMG-houO7GUmuYGlg.png',
large:
'https://api-assets.clashofclans.com/badges/512/oaygM0AU0VupNHITpoIcnWW9a6YMG-houO7GUmuYGlg.png',
medium:
'https://api-assets.clashofclans.com/badges/200/oaygM0AU0VupNHITpoIcnWW9a6YMG-houO7GUmuYGlg.png' },
members: 44,
type: 'open',
eventType: 'requiredTrophiesChange',
previous: 1000,
current: 2000
```
#### 'playerJoin' <a name = "playerJoin"></a> and 'playerLeft' <a name = "playerLeft"></a>
This event listens to player join/leave of clan.
```
Coc.on('playerJoin', (message) => {
console.log(message);
});
Coc.on('playerLeft', (message) => {
console.log(message);
});
```
Output:
```
{ clan:
{ name: 'Indian Hounds',
tag: '#V88CRPU',
badgeUrls:
{ small:
'https://api-assets.clashofclans.com/badges/70/oaygM0AU0VupNHITpoIcnWW9a6YMG-houO7GUmuYGlg.png',
large:
'https://api-assets.clashofclans.com/badges/512/oaygM0AU0VupNHITpoIcnWW9a6YMG-houO7GUmuYGlg.png',
medium:
'https://api-assets.clashofclans.com/badges/200/oaygM0AU0VupNHITpoIcnWW9a6YMG-houO7GUmuYGlg.png' },
members: 44,
type: 'open' },
tag: '#LQPYGVGPC',
name: 'Grey Ninja',
role: 'member',
expLevel: 82,
league:
{ id: 29000012,
name: 'Crystal League I',
iconUrls:
{ small:
'https://api-assets.clashofclans.com/leagues/72/kSfTyNNVSvogX3dMvpFUTt72VW74w6vEsEFuuOV4osQ.png',
tiny:
'https://api-assets.clashofclans.com/leagues/36/kSfTyNNVSvogX3dMvpFUTt72VW74w6vEsEFuuOV4osQ.png',
medium:
'https://api-assets.clashofclans.com/leagues/288/kSfTyNNVSvogX3dMvpFUTt72VW74w6vEsEFuuOV4osQ.png' } },
trophies: 2465,
versusTrophies: 2068,
clanRank: 15,
previousClanRank: 0,
donations: 0,
donationsReceived: 0 }
```
#### 'playerPromote' <a name = "playerPromote"></a> and 'playerDemote' <a name = "playerDemote"></a>
This event listens to player promotion/demotion of clan.
```
Coc.on('playerPromote', (message) => {
console.log(message);
});
Coc.on('playerDemote', (message) => {
console.log(message);
});
```
Output:
```
{ clan:
{ name: 'Indian Hounds',
tag: '#V88CRPU',
badgeUrls:
{ small:
'https://api-assets.clashofclans.com/badges/70/oaygM0AU0VupNHITpoIcnWW9a6YMG-houO7GUmuYGlg.png',
large:
'https://api-assets.clashofclans.com/badges/512/oaygM0AU0VupNHITpoIcnWW9a6YMG-houO7GUmuYGlg.png',
medium:
'https://api-assets.clashofclans.com/badges/200/oaygM0AU0VupNHITpoIcnWW9a6YMG-houO7GUmuYGlg.png' },
members: 44,
type: 'open' },
tag: '#LQPYGVGPC',
name: 'Grey Ninja',
role: 'member',
expLevel: 82,
league:
{ id: 29000012,
name: 'Crystal League I',
iconUrls:
{ small:
'https://api-assets.clashofclans.com/leagues/72/kSfTyNNVSvogX3dMvpFUTt72VW74w6vEsEFuuOV4osQ.png',
tiny:
'https://api-assets.clashofclans.com/leagues/36/kSfTyNNVSvogX3dMvpFUTt72VW74w6vEsEFuuOV4osQ.png',
medium:
'https://api-assets.clashofclans.com/leagues/288/kSfTyNNVSvogX3dMvpFUTt72VW74w6vEsEFuuOV4osQ.png' } },
trophies: 2465,
versusTrophies: 2068,
clanRank: 15,
previousClanRank: 0,
donations: 0,
donationsReceived: 0,
previous: 'coLeader',
current: 'admin' }
```
#### 'error' <a name = "error"></a>
This event listens to any error that occurs on API request ie Maintainance Break, Invalid Token, Invalid Tag etc.,
```
Coc.on('error', (message) => {
console.log(message);
});
```
Output:
```
{ tag: 'GGQ2UYJL', statusCode: 403, statusMessage: 'Forbidden' }
```