mirror of
https://github.com/RYGhub/royalnet.git
synced 2024-11-27 13:34:28 +00:00
Immagino di aver fixato il bot veramente
This commit is contained in:
parent
baf9d2ad15
commit
c28888c375
2 changed files with 68 additions and 42 deletions
|
@ -133,7 +133,7 @@ async def on_error(event, *args, **kwargs):
|
|||
print("ERRORE CRITICO:\n" + repr(ei[1]) + "\n\n" + repr(ei))
|
||||
try:
|
||||
await client.send_message(client.get_channel(config["Discord"]["main_channel"]),
|
||||
f"☢️ ERRORE CRITICO NELL'EVENTO `{event}`\n"
|
||||
f"☢️ **ERRORE CRITICO NELL'EVENTO** `{event}`\n"
|
||||
f"Il bot si è chiuso e si dovrebbe riavviare entro qualche minuto.\n"
|
||||
f"Una segnalazione di errore è stata automaticamente mandata a Steffo.\n\n"
|
||||
f"Dettagli dell'errore:\n"
|
||||
|
@ -180,6 +180,7 @@ async def on_message(message: discord.Message):
|
|||
name=message.author.name,
|
||||
discriminator=message.author.discriminator,
|
||||
avatar_hex=message.author.avatar)
|
||||
session.add(user)
|
||||
await loop.run_in_executor(executor, session.commit)
|
||||
else:
|
||||
sentry.user_context({
|
||||
|
@ -378,47 +379,68 @@ async def update_music_queue():
|
|||
global voice_player
|
||||
global voice_queue
|
||||
while True:
|
||||
if voice_client is None:
|
||||
await asyncio.sleep(5)
|
||||
continue
|
||||
if voice_player is not None and not voice_player.is_done():
|
||||
await asyncio.sleep(1)
|
||||
continue
|
||||
if len(voice_queue) == 0:
|
||||
await client.change_presence()
|
||||
await asyncio.sleep(1)
|
||||
continue
|
||||
video = voice_queue.pop(0)
|
||||
if video.ytdl_url:
|
||||
try:
|
||||
if voice_client is None:
|
||||
await asyncio.sleep(5)
|
||||
continue
|
||||
if voice_player is not None and not voice_player.is_done():
|
||||
await asyncio.sleep(1)
|
||||
continue
|
||||
if len(voice_queue) == 0:
|
||||
await client.change_presence()
|
||||
await asyncio.sleep(1)
|
||||
continue
|
||||
video = voice_queue.pop(0)
|
||||
if video.ytdl_url:
|
||||
await client.send_message(client.get_channel(config["Discord"]["main_channel"]),
|
||||
f"⬇️ E' iniziato il download di `{video.ytdl_url}`.")
|
||||
try:
|
||||
async with async_timeout.timeout(30):
|
||||
await video.download()
|
||||
except asyncio.TimeoutError:
|
||||
await client.send_message(client.get_channel(config["Discord"]["main_channel"]),
|
||||
f"⚠️ Il download della canzone ha richiesto più di 30 secondi ed è stato "
|
||||
f"annullato. ")
|
||||
continue
|
||||
except DurationError:
|
||||
await client.send_message(client.get_channel(config["Discord"]["main_channel"]),
|
||||
f"⚠️ Il file supera il limite di durata impostato in config.ini "
|
||||
f"(`{config['YouTube']['max_duration']}` secondi).")
|
||||
continue
|
||||
except Exception as e:
|
||||
await client.send_message(client.get_channel(config["Discord"]["main_channel"]),
|
||||
f"⚠️ C'è stato un errore durante il download di `{video.ytdl_url}`:\n"
|
||||
f"```\n"
|
||||
f"{e}\n"
|
||||
f"```")
|
||||
continue
|
||||
voice_player = voice_client.create_ffmpeg_player(f"opusfiles/{video.filename}.opus")
|
||||
voice_player.start()
|
||||
await client.send_message(client.get_channel(config["Discord"]["main_channel"]),
|
||||
f"⬇️ E' iniziato il download di `{video.ytdl_url}`.")
|
||||
f"▶ Ora in riproduzione in <#{voice_client.channel.id}>:\n"
|
||||
f"`{video.filename}`")
|
||||
await client.change_presence(game=discord.Game(name=video.filename, type=2))
|
||||
await video.add_to_db()
|
||||
except Exception:
|
||||
ei = sys.exc_info()
|
||||
try:
|
||||
async with async_timeout.timeout(30):
|
||||
await video.download()
|
||||
except asyncio.TimeoutError:
|
||||
await client.send_message(client.get_channel(config["Discord"]["main_channel"]),
|
||||
f"⚠️ Il download della canzone ha richiesto più di 30 secondi ed è stato "
|
||||
f"annullato. ")
|
||||
continue
|
||||
except DurationError:
|
||||
await client.send_message(client.get_channel(config["Discord"]["main_channel"]),
|
||||
f"⚠️ Il file supera il limite di durata impostato in config.ini "
|
||||
f"(`{config['YouTube']['max_duration']}` secondi).")
|
||||
continue
|
||||
except Exception as e:
|
||||
await client.send_message(client.get_channel(config["Discord"]["main_channel"]),
|
||||
f"⚠️ C'è stato un errore durante il download di `{video.ytdl_url}`:\n"
|
||||
f"```\n"
|
||||
f"{e}\n"
|
||||
f"☢️ **ERRORE CRITICO NELL'AGGIORNAMENTO DELLA CODA DI VIDEO**\n"
|
||||
f"Il bot si è disconnesso dalla chat vocale, e ha svuotato la coda.\n"
|
||||
f"Una segnalazione di errore è stata automaticamente mandata a Steffo.\n\n"
|
||||
f"Dettagli dell'errore:\n"
|
||||
f"```python\n"
|
||||
f"{repr(ei[1])}\n"
|
||||
f"```")
|
||||
continue
|
||||
voice_player = voice_client.create_ffmpeg_player(f"opusfiles/{video.filename}.opus")
|
||||
voice_player.start()
|
||||
await client.send_message(client.get_channel(config["Discord"]["main_channel"]),
|
||||
f"▶ Ora in riproduzione in <#{voice_client.channel.id}>:\n"
|
||||
f"`{video.filename}`")
|
||||
await client.change_presence(game=discord.Game(name=video.filename, type=2))
|
||||
await video.add_to_db()
|
||||
if voice_player is not None:
|
||||
await voice_player.stop()
|
||||
voice_player = None
|
||||
await voice_client.disconnect()
|
||||
voice_client = None
|
||||
voice_queue = []
|
||||
except Exception as e:
|
||||
print("ERRORE CRITICO PIU' CRITICO:\n" + repr(e) + "\n\n" + repr(sys.exc_info()))
|
||||
sentry.captureException(exc_info=ei)
|
||||
|
||||
|
||||
def process(users_connection=None):
|
||||
|
|
|
@ -47,7 +47,9 @@ def cmd_register(bot: Bot, update: Update):
|
|||
royal_username=username,
|
||||
telegram_user=update.message.from_user)
|
||||
except errors.AlreadyExistingError:
|
||||
bot.send_message(update.message.chat.id, "⚠ Il tuo account Telegram è già collegato a un account RYG o l'account RYG che hai specificato è già collegato a un account Telegram.")
|
||||
bot.send_message(update.message.chat.id, "⚠ Il tuo account Telegram è già collegato a un account RYG o"
|
||||
" l'account RYG che hai specificato è già collegato a un account"
|
||||
" Telegram.")
|
||||
session.close()
|
||||
return
|
||||
session.add(t)
|
||||
|
@ -290,7 +292,8 @@ def on_callback_query(bot: Bot, update: Update):
|
|||
user = session.query(db.Telegram).filter_by(telegram_id=update.callback_query.from_user.id).one_or_none()
|
||||
if user is None:
|
||||
bot.answer_callback_query(update.callback_query.id, show_alert=True,
|
||||
text="⚠ Il tuo account Telegram non è registrato al RYGdb! Registrati con `/register@royalgamesbot <nomeutenteryg>`.")
|
||||
text="⚠ Il tuo account Telegram non è registrato al RYGdb!"
|
||||
" Registrati con `/register@royalgamesbot <nomeutenteryg>`.")
|
||||
return
|
||||
question = session.query(db.VoteQuestion).filter_by(message_id=update.callback_query.message.message_id).one()
|
||||
answer = session.query(db.VoteAnswer).filter_by(question=question, user=user).one_or_none()
|
||||
|
@ -307,7 +310,7 @@ def on_callback_query(bot: Bot, update: Update):
|
|||
bot.edit_message_text(message_id=update.callback_query.message.message_id, chat_id=update.callback_query.message.chat.id,
|
||||
text=question.generate_text(session), reply_markup=inline_keyboard,
|
||||
parse_mode="HTML")
|
||||
except Exception as e:
|
||||
except Exception:
|
||||
raise
|
||||
finally:
|
||||
session.close()
|
||||
|
@ -332,7 +335,8 @@ def cmd_ban(bot: Bot, update: Update):
|
|||
target_user = session.query(db.Telegram).filter_by(username=arg).one_or_none()
|
||||
if target_user is None:
|
||||
bot.send_message(update.message.chat.id, "⚠ Il bersaglio specificato non esiste nel RYGdb.\n"
|
||||
"Le possibilità sono due: non è un membro RYG, oppure non si è ancora registrato e va bannato manualmente.")
|
||||
"Le possibilità sono due: non è un membro RYG, "
|
||||
"oppure non si è ancora registrato e va bannato manualmente.")
|
||||
return
|
||||
if int(target_user.telegram_id) == 25167391:
|
||||
bot.send_message(update.message.chat.id, "⚠ Il creatore della chat non può essere espulso.")
|
||||
|
|
Loading…
Reference in a new issue