-
Notifications
You must be signed in to change notification settings - Fork 1
/
main.py
executable file
·69 lines (51 loc) · 1.59 KB
/
main.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
#!/usr/bin/env python3
from variables import TOKEN, API_ID, API_HASH, BOTNAME
from bot.config import Config
from bot.handlers import Handlers
from bot.users import Users
from commands import Commands
import logging
import socket
import sys
import time
from pyrogram import Client, idle
from pyrogram.handlers import MessageHandler, InlineQueryHandler, CallbackQueryHandler
from pyrogram.enums import ParseMode
logging.basicConfig(
format="[%(asctime)s] - %(name)s - %(levelname)s - %(message)s", level=logging.INFO
)
log = logging.getLogger(BOTNAME)
def ping_server() -> bool:
try:
with socket.socket() as s:
s.connect(("api.telegram.org", 443))
except socket.error:
return False
return True
def main():
if not ping_server():
log.info("Waiting for connection...")
while not ping_server():
time.sleep(20)
bot = Client(BOTNAME, api_id=API_ID, api_hash=API_HASH, bot_token=TOKEN)
bot.set_parse_mode(ParseMode.HTML)
users = Users(bot)
config = Config(bot, users)
cmds = Commands(bot, users, config)
handlers = Handlers(users, config, cmds)
log.info("Starting bot...")
bot.start()
log.info("Bot started.")
bot.add_handler(MessageHandler(handlers.message))
bot.add_handler(InlineQueryHandler(handlers.inline))
bot.add_handler(CallbackQueryHandler(handlers.callback))
config.log("Bot started.")
log.info("Idling...")
idle()
config.log("Bot stopped.")
log.info("Stopping...")
bot.stop()
log.info("Bot stopped.")
sys.exit(0)
if __name__ == "__main__":
main()