Partage
  • Partager sur Facebook
  • Partager sur Twitter

[JavaScript] Message auto à jour et heure précise

6 juillet 2018 à 23:55:24

Bonjour,

Avant toute chose, sachez que je ne me considère même pas comme un apprenti développeur, j'ai un niveau assez faible. J'utilise Node.js afin de créer un bot Discord à utilisation privée, j'espère ne pas me tromper dans le langage. J'aimerai créer un envoi de messages automatiques qui se répète de manière hebdomadaire, j'ai une liste telle que par exemple:

Lundi

15:30 Tache 1

16:00 Tache 2

17:30 Tache 3

Mardi

16:00 Tache 4

18:00 Tache 5

20:00 Tache 6

Mercredi

15:30 Tache 7 

18:30 Tache 8

etc...

Quotidiennement, les messages ne se ressemblent pas, mais le programme reste le même chaque semaine.

J'ai songé à me simplifier la tâche en renvoyant la tâche à un bot qui le fait automatiquement répéter X temps après, mais cela ne tient pas compte des changements d'heures durant les soltices. J'aimerai ainsi savoir s'il y avait possibilité d'incrémenter une sorte d'horloge qui tiendrait compte de ces changements et ne perturberait pas le fonctionnement du bot, histoire d'avoir une piste et commencer, je n'ai pas trouvé grand chose à ce sujet sur le net.

Je vous remercie d'avance pour vos réponses :)

  • Partager sur Facebook
  • Partager sur Twitter
7 juillet 2018 à 2:50:57

Bonjour,

Mauvais forum

Le sujet est déplacé de la section Autres langages vers la section JavaScript

  • Partager sur Facebook
  • Partager sur Twitter
7 juillet 2018 à 13:41:36

Salut,

As tu regardé vers les taches Cron ?

Si tu as un serveur sous windows server utilise la command AT ou schtasks

-
Edité par Infoxp 7 juillet 2018 à 13:49:46

  • Partager sur Facebook
  • Partager sur Twitter
Infoxp ici depuis 2007
11 juillet 2018 à 18:10:57

Bonjour, excusez moi de la réponse tardive, je pensais que mon post avait été supprimé comme je ne le retrouvais plus ^^ (merci de l'avoir mis a la bonne place !)

Je me suis un peu renseigné dessus, ça a l'air d'être vraiment intéressant, mais si je pense qu'en local ça ne pose aucun problème, c'est moins sûr pour l'hébergeur... Je suis actuellement en version mobile, je vais me renseigner dès que je passe sur ordi, merci encore de m'avoir aiguillé !

  • Partager sur Facebook
  • Partager sur Twitter
12 juillet 2018 à 15:14:13

Rebonjour, 

Infoxp a écrit:

Salut,

As tu regardé vers les taches Cron ?

Si tu as un serveur sous windows server utilise la command AT ou schtasks

-
Edité par Infoxp 7 juillet 2018 à 13:49:46

Un grand MERCI, j'ai pu récupérer l'heure de mon hébergeur grâce à la fonction Date que je ne connaissais pas du tout, j'ai suivi en plus ce guide: https://openclassrooms.com/fr/courses/146276-tout-sur-le-javascript/145081-lobjet-date à défaut de ne pas pouvoir utiliser ma console.

J'ai donc avancé sur mon script, et j'ai fait une sorte de grande liste de conditions qui se répète grâce à setInterval toutes les minutes, dans laquelle je définis la date qui s'actualise, le jour, l'heure et les minutes. Puis j'ai tenté mon script de cette manière:

setInterval(function(){
	var date = new Date();
	var jour = date.getDay();
	var heure = date.getHours();
	var minutes = date.getMinutes();
	console.log('Biiip')
	if(jour === 4) {
		if(heure === 13) {
			if(minutes === 0)
				 bot.channels.get("466726740904116235").send({embed: {
			 color: 3066993,
			 title: 'Example 1',
			 description: 'une desc' }});
			if(minutes === 1)
				bot.channels.get("466726740904116235").send({embed: {
			 color: 3447003,
			 title: 'Example 2',
			 description: 'une desc' }});
			if(minutes === 2)
				bot.channels.get("466726740904116235").send({embed: {
			 color: 15844367,
			 title: 'Example 3',
			 description: 'une desc' }});
		}
		if(heure === 14) {
			if(minutes === 30)
		 bot.channels.get("466726740904116235").send({embed: {
			 color: 3066993,
			 title: 'Examp 4',
			 description: 'une desc' }});
			if(minutes === 45)
		 bot.channels.get("466726740904116235").send({embed: {
			 color: 3447003,
			 title: 'Example 5',
			 description: 'une desc' }});
			if(minutes === 55)
		 bot.channels.get("466726740904116235").send({embed: {
			 color: 15844367,
			 title: 'Example 6',
			 description: 'une desc' }});
		}
// etc //

                       if(heure === 18) {
			if(minutes === 0)
		bot.channels.get("466726740904116235").send({embed: {
			 color: 15158332,
			 title: 'Examples',
			 description: 'desc' }});
		}
	}
}, 60000);

Sauf que problème, à elle seule, la condition heure et la condition minute fonctionnent bien, mais une fois les deux enchassées, plus rien ne se passe :/

EDIT: Mon Dieu, j'avais juste oublié de remettre à mon bot la permission de parler vu que j'avais eu des erreurs précédemment XDD

Le code semble marcher, je le laisse tourner et reviens vers vous dans la soirée pour vous dire si tout est bon !

DOUBLE EDIT : Tout fonctionne bien, merci pour tout!

-
Edité par TomFroment1 13 juillet 2018 à 16:49:24

  • Partager sur Facebook
  • Partager sur Twitter
27 mars 2020 à 19:15:53

Bonjour,

J'essaie de préparer un bot Discord pour poster des annonces à heure fixe. Je suis une vrai noob désolée. J'ai repris ton code pour l'adapter à mon bot mais je n'ai jamais tenter d'exécuter un programme via autre chose qu'une commande. Or ici, j'aimerai que l'heure déclenche l'envoi du post. Mais mon bot est invariablement offline. Comment puise-je dire au bot d'exécuter le programme sans passer par une commande ?

  • Partager sur Facebook
  • Partager sur Twitter
27 mars 2020 à 21:33:03

Bonjour,

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter