diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..5615ae5 --- /dev/null +++ b/build.sh @@ -0,0 +1,2 @@ +docker build . -t jeancloud/mutubot:1 +docker push jeancloud/mutubot:1 diff --git a/main.py b/main.py index 60b9174..d70be75 100644 --- a/main.py +++ b/main.py @@ -5,6 +5,7 @@ import requests from datetime import date import urllib.parse from random import shuffle +import time # To send discord messages (fucking async functions…) import asyncio @@ -32,7 +33,7 @@ def load_guilds_data(): def send_mass_mail(guild, subject, content): - send_mail(guild, guild['mailing'], subject, content) + return send_mail(guild, guild['mailing'], subject, content) def send_mail(guild, to, subject, content): @@ -44,11 +45,25 @@ def send_mail(guild, to, subject, content): with smtplib.SMTP_SSL(guild['smtp_host'], guild['smtp_port'], context=ssl_context) as server: server.login(guild['smtp_username'], guild['smtp_pass']) - server.send_message(msg) + return server.send_message(msg) + return False -def mail_message(message): +async def mail_message(message): + subject = message.content.split('\n')[0][:50] # TODO add … if message is not complete on the subject - send_mass_mail(guilds[message.guild.id], f'[Mutubot] Message discord de {message.author.display_name} : {message.content:.50}', f'{message.author.display_name}:\n{message.content}') + print('Discord message received: ', subject) + if subject.lower() == 'test': + print('Message de test détecté, il ne sera pas relayé') + await message.reply('Message de test détecté, il ne sera pas relayé') + else: + try: + send_mass_mail(guilds[message.guild.id], f'[Mutubot] Message discord de {message.author.display_name} : {subject}', f'{message.author.display_name}:\n{message.content}') + except Exception as e: + await message.reply('Le message semble ne pas s’être envoyé à la mailing') + print('Message non envoyé à la mailing', e) + else: + await message.reply('Message envoyé à la mailing') + def req(url, data): x = requests.post(url, headers={'Content-Type': 'application/x-www-form-urlencoded'}, data=data) @@ -111,11 +126,13 @@ def create_framavote (guild, names): finder = scrap_framavote(guild['framavote']) # Random order - shuffle(guild['members']) + #shuffle(guild['members']) # Add lines for i in range(len(guild['members'])): - create_line_framadate(finder.token, guild['framavote'], 'Anne ONyme'+str(i), names) + print('create_line_framadate ', i) + create_line_framadate(finder.token, guild['framavote'], 'Anne ONyme'+str(i+1), names) + time.sleep(2) # Update links finder = scrap_framavote(guild['framavote']) @@ -128,6 +145,7 @@ Vous avez été convié à un vote anonyme. Voici le lien où voter : {link} """ send_mail(guild, mail, '[Mutubot] Vous êtes convié à un vote anonyme', content) + time.sleep(2) return finder.public_link @@ -151,6 +169,7 @@ def cleaner (): @scheduler.scheduled_job('cron', day=1) def reminder (): + # TODO on dirait que ça ne s’envoie qu’au premier serveur for i in guilds: print(f"reminding {i} : {guilds[i]['mailing']}") message = generate_reminder_message(guilds[i]) @@ -173,6 +192,7 @@ Il est l’heure de déclarer ses revenus : Et d’annoncer à quelle heure vous souhaitez faire la mutunion : <{sondage}> +(Voter vide quand on ne peut pas c’est rapide et utile !) Bon début de mois :D Le mutubot @@ -204,12 +224,13 @@ async def on_message(message): randomvote = message.content.split(' ')[1:] return elif message.content == 'Pamplemousse agrivoltaiste' and message.type == discord.MessageType.reply : + await message.reply("Ok je m’y met, patientez bien ça peut prendre plusieurs minutes") public_link = create_framavote(guilds[message.guild.id], randomvote) randomvote = None await message.reply("C’est fait ! Vérifiez bien par vous même parce que je suis un peu fini à l’arache… " + public_link) return elif message.channel.id in guilds[message.guild.id]['mailed_channels']: - mail_message(message) + await mail_message(message) # Actually starts the bot client.run(TOKEN)