Skip to content

Commit 8ea6ed7

Browse files
authored
Add feature private messages (#17)
1 parent 5ccadc9 commit 8ea6ed7

File tree

2 files changed

+126
-5
lines changed

2 files changed

+126
-5
lines changed

bot/cogs/belts.json

+63
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
{
2+
"Branco": {
3+
"objectives" : [
4+
"- Finalizar um projeto sozinho",
5+
"- Apresentar o teu projeto a outros ninjas",
6+
"- Saber o nome de 5 ninjas e 2 mentores",
7+
"- Completar o Lightbot"],
8+
"color" : "FFFFFF"
9+
},
10+
"Amarelo" : {
11+
"objectives" : [
12+
"- Estar presente em 4 sessões",
13+
"- Fazer um projeto e apresentar à mesa"],
14+
"color" : "F7E129"
15+
},
16+
"Azul" : {
17+
"objectives" : [
18+
"- Ajudar como mentor numa sessão",
19+
"- Saber o nome de 7 ninjas e 4 mentores",
20+
"- Conseguir completar o código que os mentores têm preparado para ti",
21+
"- Fazer um site"],
22+
"color" : "296DF7"
23+
},
24+
"Verde" : {
25+
"objectives" : [
26+
"- Apresentar um projeto para o Dojo inteiro",
27+
"- Chegar a 5 Kyu em CodeWars",
28+
"- Missão secreta n.º2",
29+
"- Projeto em raspberry c/ apresentação"],
30+
"color" : "0ACD1B"
31+
},
32+
"Laranja" : {
33+
"objectives" : [
34+
"- Projeto de Fuler",
35+
"- Com a ajuda de um mentor, montar um computador",
36+
"- Introduzir conceitos de bash",
37+
"- Missão secreta n.º4 (difícil)"],
38+
"color" : "F48005"
39+
},
40+
"Vermelho" : {
41+
"objectives" : [
42+
"- Ser mentor 1 sessão",
43+
"- Demonstração de conhecimento do paradigma POO",
44+
"- Ter um projeto que use API externa"],
45+
"color" : "F60909"
46+
},
47+
"Roxo" : {
48+
"objectives" : [
49+
"- Conceitos básicos g7",
50+
"- Criar uma missão secreta",
51+
"- Ser mentor 2 sessões",
52+
"- Ter conta e saber usar o Slack",
53+
"- Criar um Bot com uma API externa",
54+
"- Última missão secreta"],
55+
"color" : "A709F6"
56+
},
57+
"Preto" : {
58+
"objectives" : [
59+
"Não tens, és um guru da programação!"
60+
],
61+
"color" : "000000"
62+
}
63+
}

bot/cogs/belts.py

+63-5
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,40 @@
11
from enum import Enum, unique
22

3+
import json
4+
35
import discord
46
from discord.ext import commands
57

8+
class FileHandler():
9+
file = "bot/cogs/belts.json"
10+
11+
def __init__(self, belt):
12+
self.belt = belt
13+
self.msg = self.get_info()[0]
14+
self.color = self.get_info()[1]
15+
16+
def get_info(self):
17+
with open(self.file) as json_file:
18+
data = json.load(json_file)
19+
msg = f"Subiste para {self.belt} :clap:\n\nPróximos objetivos:"
20+
color = int(data[self.belt]["color"], 16)
21+
for param in data[self.belt]["objectives"]:
22+
msg += '\n' + param
23+
24+
return (
25+
msg,
26+
color
27+
)
28+
29+
translator_to_emoji = {"Branco" : ":white_circle:",
30+
"Amarelo" : ":yellow_circle:",
31+
"Azul" : ":blue_circle:",
32+
"Verde" : ":green_circle:",
33+
"Laranja" : ":orange_circle:",
34+
"Vermelho" : ":red_circle:",
35+
"Roxo" : ":purple_circle:",
36+
"Preto" : ":black_circle:"}
37+
638
@unique
739
class Belts(Enum):
840
Branco = 1
@@ -40,7 +72,7 @@ def get_role_from_name(guild, belt):
4072
for role in guild.roles:
4173
if role.name == belt:
4274
return role
43-
75+
4476
class BeltsAttributions(commands.Cog):
4577
def __init__(self, client):
4678
self.client = client
@@ -62,11 +94,24 @@ async def promove(self, ctx, user, belt):
6294
reason = None,
6395
atomic = True
6496
)
65-
97+
98+
# Public message
6699
await ctx.send(
67100
f'{user} agora és cinturão {belt} :tada:'
68101
)
69-
102+
103+
# Private message
104+
file_handler = FileHandler(belt)
105+
emoji = translator_to_emoji[belt]
106+
user = member
107+
embed = discord.Embed(
108+
title = f"{emoji} Parabéns, subiste de cinturão :tada:",
109+
description = file_handler.msg,
110+
color = file_handler.color
111+
)
112+
113+
await user.send(embed = embed)
114+
70115
elif belt == ninja.current_belt().name:
71116
await ctx.reply(
72117
f"Esse já é o cinturão do ninja {user}!"
@@ -79,11 +124,24 @@ async def promove(self, ctx, user, belt):
79124
reason = None,
80125
atomic = True
81126
)
82-
127+
128+
# Public message
83129
await ctx.send(
84130
f'{user} agora és cinturão {belt} :tada:'
85131
)
86-
132+
133+
# Private message
134+
file_handler = FileHandler(belt)
135+
emoji = translator_to_emoji[belt]
136+
user = member
137+
embed = discord.Embed(
138+
title = f"{emoji} Parabéns, subiste de cinturão :tada:",
139+
description = file_handler.msg,
140+
color = file_handler.color
141+
)
142+
143+
await user.send(embed = embed)
144+
87145
elif belt != ninja.next_belt().name:
88146
await ctx.send(
89147
f'{user} esse cinturão não é valido de se ser atribuido.'

0 commit comments

Comments
 (0)