-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
154 lines (139 loc) · 7.2 KB
/
main.py
File metadata and controls
154 lines (139 loc) · 7.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
#Зона import
import discord
from discord import utils
from discord.ext import commands
from discord.ext.commands import Bot
import config
import random
import string
import time
#Конец зоны import
#Объявление функций
def buildblock(size):
return ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(size))
#Конец объявления функций
#Объявление глобальных переменных
#Переменные объявлены
result = "?"
#Объявления префикса
Bot = commands.Bot(command_prefix= '!')
#Префикс объявлен
#Вывод объявления об активности
@Bot.event
async def on_ready():
print('>>Bot started. Обычно, ты на этом радуешься)')
#Сепаратор------------------------------------------
#Команда startvote (outdated)
#@Bot.command()
#@commands.has_permissions(administrator=True)
#async def startvote(ctx, arg):
# emb = discord.Embed(title=f'Начато голосование',
# description='Голосуем за: ' + str(arg) + '\n' + 'Голосование кончается через 30 секунд',
# colour=discord.Color.purple())
#
# message = await ctx.send(embed=emb) # Возвращаем сообщение после отправки
# await message.add_reaction('✅')
# await message.add_reaction('❌')
# print('>>Sent message about voting. Voting for: ' + str(arg))
#Конец startvote
#Начало группы vote_commands
message_id = 0 # Переменная для сообщения голосования
@Bot.command(pass_context=True)
@commands.has_permissions(administrator=True)
async def startvote(ctx, content):
#channel = ctx.channel
emb = discord.Embed(title=f'Голосование начато.', description='Голосуем за: ' + str(content),
colour=discord.Color.purple())
message = await ctx.send(embed=emb)
print('>>Started voting. Voting about: ' + str(content))
await message.add_reaction('✅')
await message.add_reaction('❌')
global message_id # Если используется класс, то необходимо создать в классе переменную
message_id = message.id # Сохраняем id сообщения для голосования
@Bot.command(pass_context=True)
@commands.has_permissions(administrator=True)
async def endvote(ctx):
channel = ctx.channel
emb = discord.Embed(title=f'До конца голосования осталось 10 секунд!', description='Успей отдать свой голос!')
await ctx.send(embed=emb)
time.sleep(10)
message = await channel.fetch_message(message_id) # Ищем сообщение
# Фильтруем реакции, чтобы остались только нужные
resactions = [reaction for reaction in message.reactions if reaction.emoji in ['✅', '❌']]
# Превращаем результат голосования в строку (вычитаем 1 из количества, значение по умолчанию)
result = ''
for reaction in resactions:
result += reaction.emoji + ": " + str(reaction.count - 1)
FinalResultY = result[3]
FinalResultN = result[7]
if FinalResultY > FinalResultN:
Final = 'Принято'
elif FinalResultY == FinalResultN:
Final = 'Голоса равны. Решение за организатором голосования.'
elif FinalResultY < FinalResultN:
Final = 'Отказано.'
emb = discord.Embed(title=f'Результат.', description='Голоса: ' + str(result),
colour=discord.Color.purple())
emb.add_field(name="Итог: ", value=Final, inline=True)
print('>>Voting finished. Result: ' + str(result) + ' Final result: ' + Final)
await ctx.send(embed=emb)
#Конец группы vote_commands
#Начало группы vote_event_commands
message_id = 0 # Переменная для сообщения голосования
@Bot.command(pass_context=True)
@commands.has_permissions(administrator=True)
async def starteventvote(ctx, content):
#channel = ctx.channel
emb = discord.Embed(title=f'Голосование за ивент.', description='Ивент: ' + str(content),
colour=discord.Color.purple())
message = await ctx.send(embed=emb)
print('>>Voting for event started. Voting for: ' + str(content))
await message.add_reaction('✅')
await message.add_reaction('❌')
global message_id # Если используется класс, то необходимо создать в классе переменную
message_id = message.id # Сохраняем id сообщения для голосования
@Bot.command(pass_context=True)
@commands.has_permissions(administrator=True)
async def endeventvote(ctx):
channel = ctx.channel
message = await channel.fetch_message(message_id) # Ищем сообщение
# Фильтруем реакции, чтобы остались только нужные
resactions = [reaction for reaction in message.reactions if reaction.emoji in ['✅', '❌']]
# Превращаем результат голосования в строку (вычитаем 1 из количества, значение по умолчанию)
result = ''
for reaction in resactions:
result += reaction.emoji + ": " + str(reaction.count - 1)
#Посчёт результата(Принято/Отказано)
FinalResultY = result[3]
FinalResultN = result[7]
if FinalResultY > FinalResultN:
Final = 'Принято'
elif FinalResultY == FinalResultN:
Final = 'Голоса равны. Решение за организатором голосования.'
elif FinalResultY < FinalResultN:
Final = 'Отказано.'
emb = discord.Embed(title=f'Результат.', description='Итог голосования: ' + str(result),
colour=discord.Color.purple())
emb.add_field(name="Итог: ", value=Final, inline=True)
print('>>Voting for event finished. Result: ' + str(result) + ' Final result: ' + Final)
await ctx.send(embed=emb)
#Конец группы vote_event_commands
#Начало группы Debug
@Bot.command(pass_context=True)
@commands.has_permissions(administrator=True)
async def debug(ctx):
emb=discord.Embed(title=f'Attention!', description='Debug menu was deleted cause of not working as was programmed. Now really get out.',
colour=discord.Color.purple())
await ctx.send(embed=emb)
#Конец группы Debug
#Начало команды shout
@Bot.command(pass_context=True)
@commands.has_permissions(administrator=True)
async def shout(ctx, content):
emb = discord.Embed(title=f'Крик админа!', description=str(content),
color=discord.Color.purple())
await ctx.send(embed=emb)
#Конец команды shout
Bot.run(config.TOKEN)
pass_key = buildblock(8)
print('>>Password for debug created. Password: ' + pass_key)