Handle sync error and quit if initial sync fails
This commit is contained in:
parent
549fa08918
commit
1291e324ce
49
bot.py
49
bot.py
|
@ -22,7 +22,7 @@ from io import BytesIO
|
||||||
from PIL import Image
|
from PIL import Image
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
from nio import AsyncClient, InviteEvent, JoinError, RoomMessageText, MatrixRoom, LoginError, RoomMemberEvent, RoomVisibility, RoomPreset, RoomCreateError, RoomResolveAliasResponse, UploadError, UploadResponse
|
from nio import AsyncClient, InviteEvent, JoinError, RoomMessageText, MatrixRoom, LoginError, RoomMemberEvent, RoomVisibility, RoomPreset, RoomCreateError, RoomResolveAliasResponse, UploadError, UploadResponse, SyncError
|
||||||
|
|
||||||
# Couple of custom exceptions
|
# Couple of custom exceptions
|
||||||
|
|
||||||
|
@ -544,30 +544,31 @@ class Bot:
|
||||||
self.logger.info(f'All modules stopped.')
|
self.logger.info(f'All modules stopped.')
|
||||||
|
|
||||||
async def run(self):
|
async def run(self):
|
||||||
await self.client.sync()
|
sync_response = await self.client.sync()
|
||||||
for roomid, room in self.client.rooms.items():
|
if type(sync_response) == SyncError:
|
||||||
self.logger.info(f"Bot is on '{room.display_name}'({roomid}) with {len(room.users)} users")
|
self.logger.error(f"Received Sync Error when trying to do initial sync! Error message is: %s", sync_response.message)
|
||||||
if len(room.users) == 1 and self.leave_empty_rooms:
|
|
||||||
self.logger.info(f'Room {roomid} has no other users - leaving it.')
|
|
||||||
self.logger.info(await self.client.room_leave(roomid))
|
|
||||||
|
|
||||||
self.start()
|
|
||||||
|
|
||||||
self.poll_task = asyncio.get_event_loop().create_task(self.poll_timer())
|
|
||||||
|
|
||||||
if self.client.logged_in:
|
|
||||||
self.load_settings(self.get_account_data())
|
|
||||||
self.client.add_event_callback(self.message_cb, RoomMessageText)
|
|
||||||
self.client.add_event_callback(self.invite_cb, (InviteEvent,))
|
|
||||||
self.client.add_event_callback(self.memberevent_cb, (RoomMemberEvent,))
|
|
||||||
|
|
||||||
if self.join_on_invite:
|
|
||||||
self.logger.info('Note: Bot will join rooms if invited')
|
|
||||||
self.logger.info('Bot running as %s, owners %s', self.client.user, self.owners)
|
|
||||||
self.bot_task = asyncio.create_task(self.client.sync_forever(timeout=30000))
|
|
||||||
await self.bot_task
|
|
||||||
else:
|
else:
|
||||||
self.logger.error('Client was not able to log in, check env variables!')
|
for roomid, room in self.client.rooms.items():
|
||||||
|
self.logger.info(f"Bot is on '{room.display_name}'({roomid}) with {len(room.users)} users")
|
||||||
|
if len(room.users) == 1 and self.leave_empty_rooms:
|
||||||
|
self.logger.info(f'Room {roomid} has no other users - leaving it.')
|
||||||
|
self.logger.info(await self.client.room_leave(roomid))
|
||||||
|
|
||||||
|
if self.client.logged_in:
|
||||||
|
self.start()
|
||||||
|
self.poll_task = asyncio.get_event_loop().create_task(self.poll_timer())
|
||||||
|
self.load_settings(self.get_account_data())
|
||||||
|
self.client.add_event_callback(self.message_cb, RoomMessageText)
|
||||||
|
self.client.add_event_callback(self.invite_cb, (InviteEvent,))
|
||||||
|
self.client.add_event_callback(self.memberevent_cb, (RoomMemberEvent,))
|
||||||
|
|
||||||
|
if self.join_on_invite:
|
||||||
|
self.logger.info('Note: Bot will join rooms if invited')
|
||||||
|
self.logger.info('Bot running as %s, owners %s', self.client.user, self.owners)
|
||||||
|
self.bot_task = asyncio.create_task(self.client.sync_forever(timeout=30000))
|
||||||
|
await self.bot_task
|
||||||
|
else:
|
||||||
|
self.logger.error('Client was not able to log in, check env variables!')
|
||||||
|
|
||||||
async def shutdown(self):
|
async def shutdown(self):
|
||||||
await self.close()
|
await self.close()
|
||||||
|
|
Loading…
Reference in New Issue