Ajout de la commande repet

This commit is contained in:
tfa
2022-10-18 11:19:46 +02:00
parent f8eea55d28
commit e36f682165

View File

@@ -10,6 +10,8 @@ import email
import email.encoders
import re
import datetime
import locale
class Config(BaseProxyConfig):
def do_update(self, helper: ConfigUpdateHelper) -> None:
@@ -26,7 +28,7 @@ class MailBot(Plugin):
@command.new(name="mail")
@command.argument("pattern", pass_raw=True, required=True)
async def command(self, evt: MessageEvent, pattern: str) -> None:
async def sendMail(self, evt: MessageEvent, pattern: str) -> None:
await evt.mark_read()
try:
fullMail = pattern.split("\n", 1)
@@ -66,6 +68,54 @@ class MailBot(Plugin):
await evt.respond("<p>!mail Object<br />Corps du message<p>", allow_html=True)
def next_weekday(self, d, weekday):
days_ahead = weekday - d.weekday()
if days_ahead < 0:
days_ahead += 7
return d + datetime.timedelta(days_ahead)
@command.new(name="repet")
@command.argument("pattern", pass_raw=True, required=True)
async def repet(self, evt: MessageEvent, pattern: str) -> None:
await evt.mark_read()
try:
locale.setlocale(locale.LC_ALL, 'fr_FR.UTF-8')
#Mercredi jour = 2
nWed = self.next_weekday(datetime.date.today(), 2)
subject = "Programme répet du " + nWed.strftime('%d %B')
body = pattern
if len(body) == 0:
self.log.error("Il manque le corps du mail")
await evt.respond('Il manque le corps du mail')
await evt.respond("<p>!repet Corps du message<p>", allow_html=True)
return
self.log.info("Connecting to " + self.config["smtp_server"]+", port : "+ str(self.config["smtp_port"]))
smtp_server=smtplib.SMTP(self.config["smtp_server"],self.config["smtp_port"],None,20, None)
smtp_server.ehlo()
smtp_server.starttls()
smtp_server.ehlo()
self.log.info("With user : " + self.config["sender_addr"])
smtp_server.login(self.config["sender_addr"], self.config["sender_passwd"])
msg = MIMEMultipart()
user = re.search('@(.*):', evt.sender)
msg['From'] = user.group(1) + " via ConDeBot<" + self.config["sender_addr"] + '>'
self.log.info(msg['From'])
msg['To'] = self.config["send_to"]
msg['Subject'] = subject
msg['Date'] = email.utils.formatdate(localtime=True)
msg.attach(MIMEText(body))
self.log.info(msg.as_string())
smtp_server.sendmail(msg['From'],msg['To'],msg.as_string())
await evt.respond('Mail envoyé')
except Exception as e:
self.log.error(str(e))
await evt.respond('Erreur envoi mail')
await evt.respond("<p>!mail Object<br />Corps du message<p>", allow_html=True)
@classmethod
def get_config_class(cls) -> Type[BaseProxyConfig]:
return Config