Skip to content

Commit adce5c9

Browse files
feat: update types from backend, add delrole command
1 parent 96115e1 commit adce5c9

File tree

1 file changed

+66
-11
lines changed

1 file changed

+66
-11
lines changed

src/commands/role.ts

Lines changed: 66 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ const numberOrString = z.string().transform((s) => {
1313

1414
_commandsBase
1515
.createCommand({
16-
trigger: "getrole",
16+
trigger: "getroles",
1717
scope: "private",
18-
description: "Get role of userid",
18+
description: "Get roles of an user",
1919
args: [
2020
{
2121
key: "username",
@@ -34,7 +34,9 @@ _commandsBase
3434

3535
try {
3636
const { roles } = await api.tg.permissions.getRoles.query({ userId })
37-
await context.reply(fmt(({ b }) => (roles ? [`Roles:`, b`${roles.join(" ")}`] : "This user has no roles")))
37+
await context.reply(
38+
fmt(({ b }) => (roles?.length ? [`Roles:`, b`${roles.join(" ")}`] : "This user has no roles"))
39+
)
3840
} catch (err) {
3941
await context.reply(`There was an error: \n${String(err)}`)
4042
}
@@ -65,20 +67,73 @@ _commandsBase
6567
}
6668

6769
try {
68-
const { roles } = await api.tg.permissions.getRoles.query({ userId })
69-
const { error } = await api.tg.permissions.addRole.mutate({ userId, adderId: context.from.id, role: args.role })
70+
const { roles, error } = await api.tg.permissions.addRole.mutate({
71+
userId,
72+
adderId: context.from.id,
73+
role: args.role,
74+
})
75+
7076
if (error) {
7177
await context.reply(fmt(({ n }) => n`There was an error: ${error}`))
7278
return
7379
}
80+
81+
await context.reply(
82+
fmt(
83+
({ b, n }) => [b`✅ Role added!`, n`${b`Username:`} ${args.username}`, n`${b`Updated roles:`} ${roles}`],
84+
{
85+
sep: "\n",
86+
}
87+
)
88+
)
89+
await context.deleteMessage()
90+
} catch (err) {
91+
await context.reply(`There was an error: \n${String(err)}`)
92+
}
93+
},
94+
})
95+
.createCommand({
96+
trigger: "delrole",
97+
scope: "private",
98+
description: "Remove role from an user",
99+
args: [
100+
{
101+
key: "username",
102+
type: numberOrString,
103+
description: "The username or the user id of the user you want to remove the role from",
104+
},
105+
{ key: "role", type: z.enum<Role[]>(["owner", "president", "direttivo", "hr", "admin"]) },
106+
],
107+
permissions: {
108+
allowedRoles: ["owner", "direttivo"],
109+
},
110+
handler: async ({ context, args }) => {
111+
const userId: number | null =
112+
typeof args.username === "string" ? await getTelegramId(args.username.replaceAll("@", "")) : args.username
113+
114+
if (userId === null) {
115+
await context.reply("Not a valid userId or username not in our cache")
116+
return
117+
}
118+
119+
try {
120+
const { roles, error } = await api.tg.permissions.removeRole.mutate({
121+
userId,
122+
removerId: context.from.id,
123+
role: args.role,
124+
})
125+
126+
if (error) {
127+
await context.reply(fmt(({ n }) => n`There was an error: ${error}`))
128+
return
129+
}
130+
74131
await context.reply(
75132
fmt(
76-
({ b, n, u }) => [
77-
b`✅ Role set!`,
78-
n`${b`Username:`} ${args.username}`,
79-
n`${b`Roles:`} ${u`${args.role}`} ${roles ? roles.join(" ") : ""}`,
80-
],
81-
{ sep: "\n" }
133+
({ b, n }) => [b`✅ Role removed!`, n`${b`Username:`} ${args.username}`, n`${b`Updated roles:`} ${roles}`],
134+
{
135+
sep: "\n",
136+
}
82137
)
83138
)
84139
await context.deleteMessage()

0 commit comments

Comments
 (0)