mirror of
https://github.com/RYGhub/royalnet.git
synced 2024-11-24 03:54:20 +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))
|
print("ERRORE CRITICO:\n" + repr(ei[1]) + "\n\n" + repr(ei))
|
||||||
try:
|
try:
|
||||||
await client.send_message(client.get_channel(config["Discord"]["main_channel"]),
|
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"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"Una segnalazione di errore è stata automaticamente mandata a Steffo.\n\n"
|
||||||
f"Dettagli dell'errore:\n"
|
f"Dettagli dell'errore:\n"
|
||||||
|
@ -180,6 +180,7 @@ async def on_message(message: discord.Message):
|
||||||
name=message.author.name,
|
name=message.author.name,
|
||||||
discriminator=message.author.discriminator,
|
discriminator=message.author.discriminator,
|
||||||
avatar_hex=message.author.avatar)
|
avatar_hex=message.author.avatar)
|
||||||
|
session.add(user)
|
||||||
await loop.run_in_executor(executor, session.commit)
|
await loop.run_in_executor(executor, session.commit)
|
||||||
else:
|
else:
|
||||||
sentry.user_context({
|
sentry.user_context({
|
||||||
|
@ -378,47 +379,68 @@ async def update_music_queue():
|
||||||
global voice_player
|
global voice_player
|
||||||
global voice_queue
|
global voice_queue
|
||||||
while True:
|
while True:
|
||||||
if voice_client is None:
|
try:
|
||||||
await asyncio.sleep(5)
|
if voice_client is None:
|
||||||
continue
|
await asyncio.sleep(5)
|
||||||
if voice_player is not None and not voice_player.is_done():
|
continue
|
||||||
await asyncio.sleep(1)
|
if voice_player is not None and not voice_player.is_done():
|
||||||
continue
|
await asyncio.sleep(1)
|
||||||
if len(voice_queue) == 0:
|
continue
|
||||||
await client.change_presence()
|
if len(voice_queue) == 0:
|
||||||
await asyncio.sleep(1)
|
await client.change_presence()
|
||||||
continue
|
await asyncio.sleep(1)
|
||||||
video = voice_queue.pop(0)
|
continue
|
||||||
if video.ytdl_url:
|
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"]),
|
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:
|
try:
|
||||||
async with async_timeout.timeout(30):
|
|
||||||
await video.download()
|
|
||||||
except asyncio.TimeoutError:
|
|
||||||
await client.send_message(client.get_channel(config["Discord"]["main_channel"]),
|
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"☢️ **ERRORE CRITICO NELL'AGGIORNAMENTO DELLA CODA DI VIDEO**\n"
|
||||||
f"annullato. ")
|
f"Il bot si è disconnesso dalla chat vocale, e ha svuotato la coda.\n"
|
||||||
continue
|
f"Una segnalazione di errore è stata automaticamente mandata a Steffo.\n\n"
|
||||||
except DurationError:
|
f"Dettagli dell'errore:\n"
|
||||||
await client.send_message(client.get_channel(config["Discord"]["main_channel"]),
|
f"```python\n"
|
||||||
f"⚠️ Il file supera il limite di durata impostato in config.ini "
|
f"{repr(ei[1])}\n"
|
||||||
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"```")
|
f"```")
|
||||||
continue
|
if voice_player is not None:
|
||||||
voice_player = voice_client.create_ffmpeg_player(f"opusfiles/{video.filename}.opus")
|
await voice_player.stop()
|
||||||
voice_player.start()
|
voice_player = None
|
||||||
await client.send_message(client.get_channel(config["Discord"]["main_channel"]),
|
await voice_client.disconnect()
|
||||||
f"▶ Ora in riproduzione in <#{voice_client.channel.id}>:\n"
|
voice_client = None
|
||||||
f"`{video.filename}`")
|
voice_queue = []
|
||||||
await client.change_presence(game=discord.Game(name=video.filename, type=2))
|
except Exception as e:
|
||||||
await video.add_to_db()
|
print("ERRORE CRITICO PIU' CRITICO:\n" + repr(e) + "\n\n" + repr(sys.exc_info()))
|
||||||
|
sentry.captureException(exc_info=ei)
|
||||||
|
|
||||||
|
|
||||||
def process(users_connection=None):
|
def process(users_connection=None):
|
||||||
|
|
|
@ -47,7 +47,9 @@ def cmd_register(bot: Bot, update: Update):
|
||||||
royal_username=username,
|
royal_username=username,
|
||||||
telegram_user=update.message.from_user)
|
telegram_user=update.message.from_user)
|
||||||
except errors.AlreadyExistingError:
|
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()
|
session.close()
|
||||||
return
|
return
|
||||||
session.add(t)
|
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()
|
user = session.query(db.Telegram).filter_by(telegram_id=update.callback_query.from_user.id).one_or_none()
|
||||||
if user is None:
|
if user is None:
|
||||||
bot.answer_callback_query(update.callback_query.id, show_alert=True,
|
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
|
return
|
||||||
question = session.query(db.VoteQuestion).filter_by(message_id=update.callback_query.message.message_id).one()
|
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()
|
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,
|
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,
|
text=question.generate_text(session), reply_markup=inline_keyboard,
|
||||||
parse_mode="HTML")
|
parse_mode="HTML")
|
||||||
except Exception as e:
|
except Exception:
|
||||||
raise
|
raise
|
||||||
finally:
|
finally:
|
||||||
session.close()
|
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()
|
target_user = session.query(db.Telegram).filter_by(username=arg).one_or_none()
|
||||||
if target_user is None:
|
if target_user is None:
|
||||||
bot.send_message(update.message.chat.id, "⚠ Il bersaglio specificato non esiste nel RYGdb.\n"
|
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
|
return
|
||||||
if int(target_user.telegram_id) == 25167391:
|
if int(target_user.telegram_id) == 25167391:
|
||||||
bot.send_message(update.message.chat.id, "⚠ Il creatore della chat non può essere espulso.")
|
bot.send_message(update.message.chat.id, "⚠ Il creatore della chat non può essere espulso.")
|
||||||
|
|
Loading…
Reference in a new issue