|
1 | 1 | # thread MatrixReceiver |
2 | 2 | import asyncio |
| 3 | +import matrix_sync.logger.get_logger as get_logger |
3 | 4 | import matrix_sync.plg_globals as plg_globals |
4 | 5 |
|
5 | 6 | from . import * |
6 | | -from .init import check_token |
7 | | -from ..utils.logger import * |
8 | 7 | from ..utils.token import getToken |
9 | 8 | from ..utils import tr |
10 | 9 | from ..event import * |
|
16 | 15 | receiver = None |
17 | 16 |
|
18 | 17 | async def message_callback(room: MatrixRoom, event: RoomMessageText) -> None: |
19 | | - message_format = plg_globals.settings["message_format"]["all_room"] |
20 | | - room_message = message_format.replace('%room_display_name%', room.display_name).replace('%sender%', room.user_name(event.sender)).replace('%message%', event.body) |
21 | | - # Avoid echo messages. |
22 | | - if not event.sender == plg_globals.config["user_id"]: |
23 | | - # Apply settings config |
24 | | - if not plg_globals.settings["listen"]["all_rooms"]: |
25 | | - message_format = plg_globals.settings["message_format"]["single_room"] |
26 | | - room_message = message_format.replace('%sender%', room.user_name(event.sender)).replace('%message%', event.body) |
27 | | - event_dispatcher(MatrixMessageEvent, event.body, room.user_name(event.sender), room.room_id) |
28 | | - log_info(room_message, "Message") |
29 | | - psi.say(room_message) |
| 18 | + room_info.id = room.room_id |
| 19 | + room_info.display_name= room.display_name |
| 20 | + if event.sender != plg_globals.config["user_id"]: |
| 21 | + event_dispatcher(MatrixMessageEvent, event.body, room.user_name(event.sender), room) |
30 | 22 |
|
31 | 23 | def on_sync_error(response: SyncError): |
| 24 | + logger = get_logger() |
32 | 25 | global homeserver_online |
33 | | - log_error(f"Sync error: {response.status_code}") |
| 26 | + logger.error(f"Sync error: {response.status_code}") |
34 | 27 | if response.status_code >= 500: |
35 | 28 | homeserver_online = False |
36 | 29 |
|
37 | 30 | async def get_messages() -> None: |
| 31 | + logger = get_logger() |
38 | 32 | global receiver |
39 | 33 | resp = None |
40 | 34 | client = AsyncClient(homeserver=get_homeserver(plg_globals.config["homeserver"])) |
41 | | - token_vaild = await check_token() |
42 | | - if token_vaild: |
43 | | - user, token = await getToken() |
44 | 35 |
|
45 | | - client.user_id = plg_globals.config["user_id"] |
46 | | - client.access_token = token |
47 | | - client.device_id = plg_globals.config["device_id"] |
| 36 | + client.user_id = plg_globals.config["user_id"] |
| 37 | + user, token = await getToken() |
| 38 | + client.access_token = token |
| 39 | + client.device_id = plg_globals.config["device_id"] |
48 | 40 |
|
49 | | - if not plg_globals.settings["listen"]["all_rooms"]: |
50 | | - log_info("ok.") |
51 | | - cfg_room_id = plg_globals.config["room_id"] |
52 | | - log_info(f"Listening: {cfg_room_id}") |
53 | | - resp = await client.upload_filter(room={"rooms": [cfg_room_id]}) |
54 | | - if isinstance(resp, UploadFilterError): |
55 | | - log_error(resp) |
| 41 | + if not plg_globals.settings["listen"]["all_rooms"]: |
| 42 | + logger.info("ok.", "Receiver") |
| 43 | + cfg_room_id = plg_globals.config["room_id"] |
| 44 | + logger.info(f"Listening: {cfg_room_id}", "Receiver") |
| 45 | + resp = await client.upload_filter(room={"rooms": [cfg_room_id]}) |
| 46 | + if isinstance(resp, UploadFilterError): |
| 47 | + logger.error(resp, "Receiver") |
56 | 48 |
|
57 | | - client.add_response_callback(on_sync_error, SyncError) |
| 49 | + client.add_response_callback(on_sync_error, SyncError) |
58 | 50 |
|
59 | | - if homeserver_online: |
60 | | - if plg_globals.settings["listen"]["old_messages"] is True: |
61 | | - receiver = asyncio.create_task(client.sync_forever(timeout=5)) |
62 | | - else: |
63 | | - if resp is not None: |
64 | | - await client.sync(timeout=5, sync_filter=resp.filter_id) |
65 | | - client.add_event_callback(message_callback, RoomMessageText) |
66 | | - receiver = asyncio.create_task(client.sync_forever(timeout=5, sync_filter=resp.filter_id)) |
67 | | - else: |
68 | | - await client.sync(timeout=5) |
69 | | - client.add_event_callback(message_callback, RoomMessageText) |
70 | | - receiver = asyncio.create_task(client.sync_forever(timeout=5)) |
| 51 | + if homeserver_online: |
| 52 | + if plg_globals.settings["listen"]["old_messages"] is True: |
| 53 | + receiver = asyncio.create_task(client.sync_forever(timeout=5)) |
71 | 54 | else: |
72 | | - log_error("Sync failed: homeserver is down or your network disconnected with it.") |
73 | | - log_info("Use !!msync start after homeserver is running or your network restored.") |
| 55 | + if resp is not None: |
| 56 | + await client.sync(timeout=5, sync_filter=resp.filter_id) |
| 57 | + client.add_event_callback(message_callback, RoomMessageText) |
| 58 | + receiver = asyncio.create_task(client.sync_forever(timeout=5, sync_filter=resp.filter_id)) |
| 59 | + else: |
| 60 | + await client.sync(timeout=5) |
| 61 | + client.add_event_callback(message_callback, RoomMessageText) |
| 62 | + receiver = asyncio.create_task(client.sync_forever(timeout=5)) |
| 63 | + else: |
| 64 | + logger.error("Sync failed: homeserver is down or your network disconnected with it.", "Receiver") |
| 65 | + logger.info("Use !!msync start after homeserver is running or your network restored.", "Receiver") |
74 | 66 |
|
75 | | - try: |
76 | | - await receiver |
77 | | - except asyncio.CancelledError: |
78 | | - log_warning(tr("on_receiver_cancelled")) |
79 | | - except Exception as e: |
80 | | - log_error(f"Receiver sync error: {e}") |
| 67 | + try: |
| 68 | + await receiver |
| 69 | + except asyncio.CancelledError: |
| 70 | + logger.warning(tr("on_receiver_cancelled"), "Receiver") |
| 71 | + except Exception as e: |
| 72 | + logger.error(f"Receiver sync error: {e}", "Receiver") |
| 73 | + receiver.cancel() |
| 74 | + finally: |
| 75 | + if receiver: |
81 | 76 | receiver.cancel() |
82 | | - finally: |
83 | | - if receiver: |
84 | | - receiver.cancel() |
85 | | - try: |
86 | | - await receiver |
87 | | - except asyncio.CancelledError: |
88 | | - pass |
89 | | - client.stop_sync_forever() |
| 77 | + if client is not None: |
90 | 78 | await client.close() |
91 | 79 |
|
92 | 80 | async def stop_sync(): |
|
0 commit comments