-
Notifications
You must be signed in to change notification settings - Fork 3
/
autoprofile.py
283 lines (247 loc) · 12.4 KB
/
autoprofile.py
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
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
# Friendly Telegram (telegram userbot)
# Copyright (C) 2018-2019 The Authors
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
# █ █ █ █▄▀ ▄▀█ █▀▄▀█ █▀█ █▀█ █ █
# █▀█ █ █ █ █▀█ █ ▀ █ █▄█ █▀▄ █▄█
# 🔒 Licensed under the GNU GPLv3
# 🌐 https://www.gnu.org/licenses/agpl-3.0.html
# 👤 https://t.me/hikamoru
# meta developer: @hikamorumods, FTG
__version__ = (1, 1, 0)
import asyncio
import datetime
from telethon.tl import functions
from telethon.utils import get_display_name
from .. import loader, utils
@loader.tds
class AutoProfileMod(loader.Module):
"""Automatic stuff for your profile :P"""
strings = {
"name": "AutoProfile",
"invalid_args": (
"<b>Missing parameters, please read the <code>.aguide</code> <emoji document_id=5213468029597261187>✔️</emoji></b>"
),
"missing_time": (
"<b>Time was not specified in bio <emoji document_id=5215273032553078755>❎</emoji></b>"
),
"enabled_bio": (
"<b>Enabled bio clock <emoji document_id=5212932275376759608>✅</emoji></b>"
),
"bio_not_enabled": (
"<b>Bio clock is not enabled <emoji document_id=5215273032553078755>❎</emoji></b>"
),
"disabled_bio": (
"<b>Disabled bio clock <emoji document_id=5212932275376759608>✅</emoji></b>"
),
"enabled_name": (
"<b>Enabled name clock <emoji document_id=5212932275376759608>✅</emoji></b>"
),
"name_not_enabled": (
"<b>Name clock is not enabled <emoji document_id=5215273032553078755>❎</emoji></b>"
),
"disabled_name": (
"<b>Name clock disabled <emoji document_id=5215273032553078755>❎</emoji></b>"
),
"_cfg_time": "Use timezone 1, -1, -3 etc.",
}
strings_uz = {
"invalid_args": (
"<b>to'g'ri argumetlar emas, <code > ni o'qing.aguide</code> <emoji document_id=5213468029597261187>✔️</emoji></b>"
),
"missing_time": (
"<b>vaqt bio-da o'rnatilmagan<emoji document_id=5215273032553078755 > ❎< / emoji></b>"
),
"enabled_bio": (
"<b>Bio soat muvaffaqiyatli o'rnatildi <emoji document_id=5212932275376759608>✅</emoji></b>"
),
"bio_not_enabled": (
"<b>soat bio-ga o'rnatilmagan<emoji document_id=5215273032553078755 > ❎< / emoji > </b>"
),
"disabled_bio": (
"<b > Bio-dagi vaqt muvaffaqiyatli o'chirildi <emoji document_id = 5212932275376759608>✅</emoji></b>"
),
"enabled_name": (
"<b>soat taxallusga muvaffaqiyatli o'rnatildi <emoji document_id = 5212932275376759608>✅</emoji></b>"
),
"name_not_enabled": (
"<b>soat taxallusga o'rnatilmagan<emoji document_id=5215273032553078755 > ❎< / emoji > </b>"
),
"disabled_name": (
"<b>taxallusdagi vaqt muvaffaqiyatli o'chirildi <emoji document_id = 5212932275376759608>✅</emoji></b>"
),
"_cfg_time": "vaqt zonasidan foydalaning 1, -1, -3 va boshqalar.",
}
strings_ru = {
"invalid_args": (
"<b>Не правильные аргуметы, прочитай <code>.aguide</code> <emoji document_id=5213468029597261187>✔️</emoji></b>"
),
"missing_time": (
"<b>Время не было установлено в био<emoji document_id=5215273032553078755>❎</emoji></b>"
),
"enabled_bio": (
"<b>Био часы успешно установлены <emoji document_id=5212932275376759608>✅</emoji></b>"
),
"bio_not_enabled": (
"<b>Часы не установлено в био<emoji document_id=5215273032553078755>❎</emoji></b>"
),
"disabled_bio": (
"<b>Время в био успешно отключен <emoji document_id=5212932275376759608>✅</emoji></b>"
),
"enabled_name": (
"<b>Часы в ник успешно установлены <emoji document_id=5212932275376759608>✅</emoji></b>"
),
"name_not_enabled": (
"<b>Часы не установлены в ник<emoji document_id=5215273032553078755>❎</emoji></b>"
),
"disabled_name": (
"<b>Время в нике успешно отключен <emoji document_id=5212932275376759608>✅</emoji></b>"
),
"_cfg_time": "Используй таймзону 1, -1, -3 и тд.",
}
strings_de = {
"invalid_args": (
"<b>Sind nicht die richtigen Argumente, lies <code>.aguide</code> <emoji document_id=5213468029597261187>✔️</emoji></b>"
),
"missing_time": (
"<b>Die Zeit wurde nicht auf bio gesetzt<emoji document_id=5215273032553078755>❎</emoji></b>"
),
"enabled_bio": (
"<b>Bio-Uhr wurde erfolgreich installiert <emoji document_id=5212932275376759608>✅</emoji></b>"
),
"bio_not_enabled": (
"<b>Die Uhr ist nicht auf bio eingestellt<emoji document_id=5215273032553078755>❎</emoji></b>"
),
"disabled_bio": (
"<b>Zeit in bio erfolgreich deaktiviert <emoji document_id=5212932275376759608>✅</emoji></b>"
),
"enabled_name": (
"<b>Die Uhr wurde erfolgreich auf den Nickname gesetzt <emoji document_id=5212932275376759608>✅</emoji></b>"
),
"name_not_enabled": (
"<b>Die Uhr ist nicht auf den Spitznamen<emoji document_id=5215273032553078755>❎</emoji></b> eingestellt"
),
"disabled_name": (
"<b>Nickzeit wurde erfolgreich deaktiviert <emoji document_id=5212932275376759608>✅</emoji></b>"
),
"_cfg_time": "Benutze die Zeitzone 1, -1, -3 usw.",
}
def __init__(self):
self.bio_enabled = False
self.name_enabled = False
self.raw_bio = None
self.raw_name = None
self.config = loader.ModuleConfig(
loader.ConfigValue(
"timezone",
"+5",
lambda: self.strings("_cfg_time"),
),
)
async def client_ready(self, client, db):
self.client = client
self._me = await client.get_me()
@loader.command(ru_doc="""Что-бы указать таймзону через конфиг""")
async def cfautoprofcmd(self, message):
"""To specify the timezone via the config"""
name = self.strings("name")
await self.allmodules.commands["config"](
await utils.answer(message,
f"{self.get_prefix()}config {name}")
)
@loader.command(ru_doc="""Автоматически изменяет биографию вашей учетной записи с учетом текущего времени, использования: .autobio 'сообщение, время как {time}'""")
async def autobiocmd(self, message):
"""Automatically changes your account's bio with current time, usage:
.autobio 'message, time as {time}'"""
msg = utils.get_args(message)
if len(msg) != 1:
return await utils.answer(message, self.strings("invalid_args", message))
raw_bio = msg[0]
if "{time}" not in raw_bio:
return await utils.answer(message, self.strings("missing_time", message))
self.bio_enabled = True
self.raw_bio = raw_bio
await self.allmodules.log("start_autobio")
await utils.answer(message, self.strings("enabled_bio", message))
while self.bio_enabled:
offset = datetime.timedelta(hours=self.config["timezone"])
tz = datetime.timezone(offset)
time1 = datetime.datetime.now(tz)
current_time = time1.strftime("%H:%M")
bio = raw_bio.format(time=current_time)
await self.client(functions.account.UpdateProfileRequest(about=bio))
await asyncio.sleep(60)
@loader.command(ru_doc="""Что-бы остановить время в био введи .stopautobio""")
async def stopautobiocmd(self, message):
"""Stop autobio cmd."""
if self.bio_enabled is False:
return await utils.answer(message, self.strings("bio_not_enabled", message))
self.bio_enabled = False
await self.allmodules.log("stop_autobio")
await utils.answer(message, self.strings("disabled_bio", message))
await self.client(
functions.account.UpdateProfileRequest(about=self.raw_bio.format(time=""))
)
@loader.command(ru_doc="""Автоматически изменяет имя вашей учетной записи с учетом текущего времени, использования: .autoname 'сообщение, время как {time}'""")
async def autonamecmd(self, message):
"""Automatically changes your Telegram name with current time, usage:
.autoname '<message, time as {time}>'"""
msg = utils.get_args(message)
if len(msg) != 1:
return await utils.answer(message, self.strings("invalid_args", message))
raw_name = msg[0]
if "{time}" not in raw_name:
return await utils.answer(message, self.strings("missing_time", message))
self.name_enabled = True
self.raw_name = raw_name
await self.allmodules.log("start_autoname")
await utils.answer(message, self.strings("enabled_name", message))
while self.name_enabled:
offset = datetime.timedelta(hours=self.config["timezone"])
tz = datetime.timezone(offset)
time1 = datetime.datetime.now(tz)
current_time = time1.strftime("%H:%M")
name = raw_name.format(time=current_time)
await self.client(functions.account.UpdateProfileRequest(first_name=name))
await asyncio.sleep(60)
@loader.command(ru_doc="""Что-бы остановить время в имени учетной записи введи .stopautoname""")
async def stopautonamecmd(self, message):
"""just write .stopautoname"""
if self.name_enabled is False:
return await utils.answer(
message, self.strings("name_not_enabled", message)
)
self.name_enabled = False
await self.allmodules.log("stop_autoname")
await utils.answer(message, self.strings("disabled_name", message))
await self.client(
functions.account.UpdateProfileRequest(
first_name=self.raw_name.format(time="")
)
)
@loader.command(ru_docs="""Доки ru/en""")
async def aguide(self, message):
"Just guide ru/en"
args = utils.get_args_raw(message)
args = args if args in {"en", "ru"} else "en"
time = "{time}"
nick = f'<a href="tg://user?id={self._me.id}">{utils.escape_html(get_display_name(self._me))}</a>'
pref = f"{utils.escape_html(self.get_prefix())}"
await utils.answer(
message,
f"<emoji document_id=5789581976176430614>💸</emoji> For example:\n\n<emoji document_id=5789667570579672963>💸</emoji> AutoName: <code>{pref}autoname '{nick} | {time}'</code>\n"
f"<emoji document_id=5789667570579672963>💸</emoji> AutoBio: <code>{pref}autobio 'smth | {time}'</code>\n"
if args == "en"
else (
f"<emoji document_id=5789581976176430614>💸</emoji> Например:\n\n<emoji document_id=5789667570579672963>💸</emoji> Авто Ник: <code>{pref}autoname '{nick} | {time}'</code>\n"
f"<emoji document_id=5789667570579672963>💸</emoji> Авто Био: <code>{pref}autobio 'что-то | {time}'</code>\n"
),
)