Bot discord / message automatique personnalisé

Signaler
Messages postés
5
Date d'inscription
dimanche 11 octobre 2020
Statut
Membre
Dernière intervention
11 octobre 2020
-
Messages postés
106
Date d'inscription
lundi 24 avril 2017
Statut
Membre
Dernière intervention
17 octobre 2020
-
Bonjour,

je me suis débutant et je me suis lancé dans la programmation via python d'un bot discord

je voudrais qu'à une heure très particulière, il poste 1 message de manière automatique contenant certaines infos à savoir : le jour, le mois et de l'année actuelles (des infos qui changent donc) sous forme de chiffres

Par exemple que tous les jours à 18h, il envoie "Bonjour, on est le 11102020" (si on est le 11 octobre)
le lendemain, il envoie à 18h : "Bonjour, on est le 12112020" (si on est le 12 octobre)
et ça automatiquement et systématiquement

donc pour cela il faut , je pense :
1- faire intervenir un objet qui permet de lire la date du jour en stockant les variables "n° du jour de l'année", "n° du mois", "n° de l'année"
2- pouvoir faire dire au bot " message textuel -- JMA ----"
3- pouvoir faire dire au bot le message à l'heure souhaitée

j'ai lu ici ou là, que pour l'étape 1, j'aurais sûrement besoin de "tm_year", "tm_mon", "tm_mday" pour les variables "changeantes"
cependant apparemment il faut aussi installer l'objet time pour avoir ça, enfin j'ai pas tout compris...

pour l'étape 3 j'ai vu aussi des pistes avec des "insert" mais je suis aussi un peu.. perdu
aussi, ce bot est prévu d'être hebergé en ligne pour être tout le temps connecté sur discord (ça importe peut-être pour la 3- )
__
Merci d'avance, et bonne journée à tous

5 réponses

Messages postés
12711
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 octobre 2020
704
Messages postés
5
Date d'inscription
dimanche 11 octobre 2020
Statut
Membre
Dernière intervention
11 octobre 2020

rebonjour,

voici mon début de code

import discord
from discord.ext import commands

bot = commands.Bot (command_prefix = "!", description = "Bot test")

@bot.event
async def on_ready():
 print("Ready!")

from time import strftime
strftime("%Y%m%d")

import time
import datetime


@bot.command()
async def temps(ctx):
 mois = 12
 message = f'strftime("%Y%m%d")'
 await ctx.send("..?")


ces dernières lignes sont fantaisistes, car je faisais des essais mais j'ai rien trouvé de concluant encore...

je n'arrive pas à récupérer les données années/mois/jour sous forme AAAAMJ, je n'arrive pas à le récupérer avec strftime, ou alors peut-être faut-il le faire avec date.year, date.month ...
quoi qu'il en soit la difficulté réside dans la possibilité de prendre ces valeurs en variable, que les valeurs changent automatiquement (il faudra donc le placer dans la boucle) et que le bot le lise comme des numéros

ps : je crois qu'un message a été supprimé? fausse manip de moi ou??

Merci beaucoup, j'ai pris, cette fois, le temps de lire tous les liens annexes à votre 1er lien !
Messages postés
12711
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 octobre 2020
704
commence peut-être par des programmes plus simples, par exemple:
from time import strftime
cejour=strftime("%Y%m%d")
print(cejour)

je pense que tu n'as pas pris le temps d'apprendre les bases.
Messages postés
5
Date d'inscription
dimanche 11 octobre 2020
Statut
Membre
Dernière intervention
11 octobre 2020

Bonjour, merci pour ta réponse
effectivement je vais, comme souvent, trop vite ..!

effectivement, avec cette variable on récupère bien l'affichage quand j'exécute
maintenant, ce que je souhaiterai, c'est réussir à le faire dire au bot

j'ai tenté aussi de le glisser à l'intérieur de la commande à laquelle le bot doit répondre comme ceci :
@bot.command()
async def temps(ctx):
 from time import strftime
 cejour=strftime("%Y%m%d")
 message = f'affichage'
 await ctx.send("print(cejour)")


mais là, le bot affiche print(cejour), il n'arrive pas à le comprendre comme une variable

merci bien, encore!
Messages postés
12711
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 octobre 2020
704
essaie alors ceci:
from time import strftime
cejour=strftime("%Y%m%d")
print(cejour)
print("print(cejour)")
Messages postés
5
Date d'inscription
dimanche 11 octobre 2020
Statut
Membre
Dernière intervention
11 octobre 2020
>
Messages postés
12711
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 octobre 2020

merci,
le premier que j'ai tenté contient :

from time import strftime
cejour=strftime("%Y%m%d")
print(cejour)
print("print(cejour)")

@bot.command()
async def temps(ctx):
 from time import strftime
 cejour=strftime("%Y%m%d")
 message = f'affichage'
 await ctx.send("print(cejour)")


le bot affiche toujours "print(cejour)"


ce second aussi :
from time import strftime
cejour=strftime("%Y%m%d")
print(cejour)
print("print(cejour)")

@bot.command()
async def temps(ctx):
 from time import strftime
 cejour=strftime("%Y%m%d")
 print(cejour)
 print("print(cejour)")
 message = f'affichage'
 await ctx.send("print(cejour)")



en fait le souci, je pense, c'est que dans le message que doit envoyé le bot, il considère print comme un mot normal et non pas comme l'affichage de la variable précédente,


merci bien
Messages postés
12711
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 octobre 2020
704 >
Messages postés
5
Date d'inscription
dimanche 11 octobre 2020
Statut
Membre
Dernière intervention
11 octobre 2020

je ne vois pas comment je peux t'aider à progresser.
je recommande que tu fasses d'abord des exercices plus simples, et je n'ai pas de tutoriel à te recommander.
Messages postés
5
Date d'inscription
dimanche 11 octobre 2020
Statut
Membre
Dernière intervention
11 octobre 2020

merci quand même pour ton aide, juste, est-ce que tu penses que ce que je veux est réalisable ?
je vais poursuivre l'apprentissage.
Messages postés
12711
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 octobre 2020
704
je pense que c'est réalisable.
Messages postés
106
Date d'inscription
lundi 24 avril 2017
Statut
Membre
Dernière intervention
17 octobre 2020
5
Bonjour,

Je crois qu'il faut mettre les variables entre {}. Ainsi, remplace
 print("print(cejour)")
par
 print("{cejour}")
... Je ne code pas en python donc, peut-être que ceci est inutile.

Bonne journée,