UNPKG

1.36 kBJavaScriptView Raw
1import { partial } from '../util'
2import { unescape } from 'plug-message-split'
3import makeProto from '../wrap'
4
5export default function wrapUser (mp, user) {
6 user.username = user.guest ? null : unescape(user.username || '')
7
8 // Chat mention string for this user.
9 const mention = `@${user.username}`
10
11 return makeProto(user, {
12 hasPermission: (role) =>
13 (user.role >= role || user.gRole >= role),
14 hasGlobalPermission: (role) =>
15 user.gRole >= role,
16
17 chat: partial(mp.chat, mention),
18 emote: partial(mp.chat, `/me ${mention}`),
19
20 add: partial(mp.addDJ, user.id),
21 move: partial(mp.moveDJ, user.id),
22 remove: partial(mp.removeDJ, user.id),
23 skip: partial(mp.skipDJ, user.id),
24
25 befriend: partial(mp.befriend, user.id),
26 rejectRequest: partial(mp.rejectFriendRequest, user.id),
27
28 ignore: partial(mp.ignore, user.id),
29 unignore: partial(mp.unignore, user.id),
30
31 mute: partial(mp.mute, user.id),
32 unmute: partial(mp.unmute, user.id),
33
34 ban: partial(mp.ban, user.id),
35 unban: partial(mp.unban, user.id),
36
37 waitlistBan: partial(mp.waitlistBan, user.id),
38 waitlistUnban: partial(mp.waitlistUnban, user.id),
39
40 getHistory: partial(mp.getUserHistory, user.id),
41
42 mention: () => mention,
43 // Allows mentioning users by doing `Hello ${user}` in chat messages.
44 toString: () => mention
45 })
46}