Skip to content

Commit 7b87619

Browse files
committed
telegramircd: add some initial type checks
1 parent a702026 commit 7b87619

File tree

1 file changed

+17
-13
lines changed

1 file changed

+17
-13
lines changed

telegramircd.py

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from datetime import datetime, timezone
66
from itertools import chain
77
import subprocess
8+
from typing import Optional, Dict, Tuple, Any
89

910
from telethon import TelegramClient
1011
from telethon.errors import SessionPasswordNeededError
@@ -20,8 +21,8 @@
2021
logger = logging.getLogger('telegramircd')
2122
im_name = 'Telegram'
2223
capabilities = set(['away-notify', 'draft/message-tags', 'echo-message', 'multi-prefix', 'sasl', 'server-time']) # http://ircv3.net/irc/
23-
options = None
24-
server = None
24+
options: Optional[Namespace] = None
25+
server: Optional["Server"] = None
2526
web = None
2627

2728

@@ -58,19 +59,20 @@ def __init__(self, *msg):
5859
### HTTP server
5960

6061
class Web(object):
61-
def __init__(self, tls):
62+
def __init__(self, tls) -> None:
6263
global web
6364
web = self
6465
self.tls = tls
65-
self.id2media = {}
66-
self.id2message = {}
67-
self.webpage_id2sender_to = {}
68-
self.recent_messages = deque()
69-
self.proc = None
66+
self.id2media: Dict[str, Tuple[Any, Any]] = {}
67+
self.id2message: Dict[str, str] = {}
68+
self.webpage_id2sender_to: Dict[str, Tuple[Any, Any]] = {}
69+
self.recent_messages: deque[str] = deque()
70+
self.proc: Optional[TelegramClient] = None
7071
self.authorized = False
7172
self.two_step = False
7273

73-
async def handle_media(self, typ, request):
74+
async def handle_media(self, typ, request) -> aiohttp.web.Response:
75+
assert options is not None and self.proc is not None
7476
id = re.sub(r'\..*', '', request.match_info.get('id'))
7577
if id not in self.id2media:
7678
return aiohttp.web.Response(status=404, text='Not Found')
@@ -100,10 +102,11 @@ async def handle_media(self, typ, request):
100102
except Exception as ex:
101103
return aiohttp.web.Response(status=500, text=str(ex))
102104

103-
async def handle_document(self, request):
105+
async def handle_document(self, request) -> aiohttp.web.Response:
104106
return await self.handle_media('document', request)
105107

106-
async def run_telethon(self):
108+
async def run_telethon(self) -> None:
109+
assert options is not None and server is not None
107110
if self.proc:
108111
await self.proc.disconnect()
109112
self.proc = TelegramClient(options.tg_session, options.tg_api_id, options.tg_api_hash)
@@ -1153,11 +1156,12 @@ async def update(self, tg_room):
11531156
for client in server.auth_clients():
11541157
client.reply('332 {} {} :{}', client.nick, self.name, self.topic)
11551158

1156-
async def update_admins(self, admins):
1159+
async def update_admins(self, admins) -> None:
1160+
assert server is not None
11571161
seen_me = False
11581162
seen = set()
11591163
for admin in admins:
1160-
user = await server.ensure_special_user(admin)
1164+
user = await server.ensure_special_user(admin, None)
11611165
if user == server:
11621166
seen_me = True
11631167
elif user in self.members:

0 commit comments

Comments
 (0)