This commit is contained in:
ilya 2025-10-06 11:17:29 +02:00
parent b353300e61
commit aa6202af9a
2 changed files with 30 additions and 7 deletions

2
build.sh Executable file
View File

@ -0,0 +1,2 @@
docker build . -t jeancloud/mutubot:1
docker push jeancloud/mutubot:1

35
main.py
View File

@ -5,6 +5,7 @@ import requests
from datetime import date from datetime import date
import urllib.parse import urllib.parse
from random import shuffle from random import shuffle
import time
# To send discord messages (fucking async functions…) # To send discord messages (fucking async functions…)
import asyncio import asyncio
@ -32,7 +33,7 @@ def load_guilds_data():
def send_mass_mail(guild, subject, content): 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): 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: with smtplib.SMTP_SSL(guild['smtp_host'], guild['smtp_port'], context=ssl_context) as server:
server.login(guild['smtp_username'], guild['smtp_pass']) 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 # 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): def req(url, data):
x = requests.post(url, headers={'Content-Type': 'application/x-www-form-urlencoded'}, data=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']) finder = scrap_framavote(guild['framavote'])
# Random order # Random order
shuffle(guild['members']) #shuffle(guild['members'])
# Add lines # Add lines
for i in range(len(guild['members'])): 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 # Update links
finder = scrap_framavote(guild['framavote']) finder = scrap_framavote(guild['framavote'])
@ -128,6 +145,7 @@ Vous avez été convié à un vote anonyme. Voici le lien où voter :
{link} {link}
""" """
send_mail(guild, mail, '[Mutubot] Vous êtes convié à un vote anonyme', content) send_mail(guild, mail, '[Mutubot] Vous êtes convié à un vote anonyme', content)
time.sleep(2)
return finder.public_link return finder.public_link
@ -151,6 +169,7 @@ def cleaner ():
@scheduler.scheduled_job('cron', day=1) @scheduler.scheduled_job('cron', day=1)
def reminder (): def reminder ():
# TODO on dirait que ça ne senvoie quau premier serveur
for i in guilds: for i in guilds:
print(f"reminding {i} : {guilds[i]['mailing']}") print(f"reminding {i} : {guilds[i]['mailing']}")
message = generate_reminder_message(guilds[i]) message = generate_reminder_message(guilds[i])
@ -173,6 +192,7 @@ Il est lheure de déclarer ses revenus :
Et dannoncer à quelle heure vous souhaitez faire la mutunion : Et dannoncer à quelle heure vous souhaitez faire la mutunion :
<{sondage}> <{sondage}>
(Voter vide quand on ne peut pas cest rapide et utile !)
Bon début de mois :D Bon début de mois :D
Le mutubot Le mutubot
@ -204,12 +224,13 @@ async def on_message(message):
randomvote = message.content.split(' ')[1:] randomvote = message.content.split(' ')[1:]
return return
elif message.content == 'Pamplemousse agrivoltaiste' and message.type == discord.MessageType.reply : elif message.content == 'Pamplemousse agrivoltaiste' and message.type == discord.MessageType.reply :
await message.reply("Ok je my met, patientez bien ça peut prendre plusieurs minutes")
public_link = create_framavote(guilds[message.guild.id], randomvote) public_link = create_framavote(guilds[message.guild.id], randomvote)
randomvote = None randomvote = None
await message.reply("Cest fait ! Vérifiez bien par vous même parce que je suis un peu fini à larache… " + public_link) await message.reply("Cest fait ! Vérifiez bien par vous même parce que je suis un peu fini à larache… " + public_link)
return return
elif message.channel.id in guilds[message.guild.id]['mailed_channels']: elif message.channel.id in guilds[message.guild.id]['mailed_channels']:
mail_message(message) await mail_message(message)
# Actually starts the bot # Actually starts the bot
client.run(TOKEN) client.run(TOKEN)