Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ajout des trois commandes : name, description, pfp. #59

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 15 additions & 24 deletions Discord-Bot-main/Bot/UR-Bot.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,67 +4,58 @@
from discord.ext import commands
import os



load_dotenv()
TOKEN = os.getenv('TOKEN')

class UR_BOT(commands.Bot):

class UR_BOT(commands.Bot):
async def on_ready(self):
print('--- We have successfully loggged in as {0.user}'.format(self))

async def on_message(self, message):
print('--- We have successfully logged in as {0.user}'.format(self))

async def on_message(self, message):
if message.author == self.user:
return
await DebugBot.debug_on_message(message);
return

await DebugBot.debug_on_message(message)

return await bot.process_commands(message)




intent = discord.Intents.default()
intent.members = True
intent.messages = True

bot = UR_BOT(command_prefix= DebugBot.event.BOT_PREFIX,intents=intent)
bot = UR_BOT(command_prefix=DebugBot.event.BOT_PREFIX, intents=intent)
bot.remove_command('help')



@bot.command()
@commands.guild_only()
async def ping(ctx):
latency = round(bot.latency * 1000)
await ctx.send(f"Pong ! {latency}ms")




@bot.command(name="help")
async def help(ctx):
await DebugBot.debug_on_help(ctx)
await DebugBot.debug_on_help(ctx)


@bot.command(name="prez")
async def prez(ctx):
await DebugBot.debug_on_prez(ctx)
await DebugBot.debug_on_prez(ctx)


@DebugBot.update_all_modules
async def reload_module():
return 0;

return 0


@bot.command(aliases=['reload', 'rld'])
async def reload_module(ctx):
await reload_module();
await ctx.channel.send("The scripts has been reloaded.");
return 0;

await reload_module()
await ctx.channel.send("The scripts has been reloaded.")
return 0

bot.run(TOKEN)

bot.run(TOKEN)
1 change: 1 addition & 0 deletions Discord-Bot-main/Bot/description.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
$help
111 changes: 111 additions & 0 deletions archives/functions.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
"""
Ci-dessous se trouvent les trois commandes qui étaient demandées dans un ticket. Voici une description de ces dernières :
• name : change le nickname du bot sur le serveur où est tapée la commande. Le nom initial (qui apparaît sur chaque serveur) ne change pas.
Pourtant, il est possible de changer ce dernier. Cependant, Discord y impose une limite (deux changements par heure).
--> Faudrait-il garder la première option ou coder la deuxième ; faire les deux ?

• description : change le message d'état de présence du bot.
On ne peut malheureusement pas changer la section "À propos de moi" par une commande.
De plus, tout comme un utilisateur lambda ne pourrait pas le faire, un même bot ne peut pas posséder plusieurs statuts différents selon les serveurs.

• pfp : change la photo de profil du bot en vérifiant l'URL et en retournant les requêtes appropriés.


D'ailleurs, on ne peut vérifier l'ID du serveur qu'à l'intérieur des fonctions, car c'est en recevant une commande, que le bot peut connaître le serveur d'où est tapée cette dernière. C'est pourquoi il subsiste une répétition des lignes
suivantes : "server_id = ctx.guild.id" & "guild = bot.get_guild(server_id)".
Ces deux commandes récupèrent l'ID du serveur d'où est tapée la commande.
Ce sont elles qui permettent pour un même bot d'avoir un nom ou une photo de profil différente selon les serveurs.


Ces programmes ont donc bien été retiré du code fonctionnel. En revanche, leur code est laissé ci-dessous, si le besoin
de s'en inspirer se présente.
"""
# import aiohttp


# Fonction pour lire la description depuis le fichier
# def read_description_from_file():
# try:
# with open('description.txt', 'r') as file:
# # ↓ De quel fichier ?, ↓ Quelle permission ?
# return file.read().strip()
# except FileNotFoundError:
# return ""
#
#
# # Fonction pour écrire la description dans le fichier
# def write_description_to_file(texte):
# with open('description.txt', 'w') as file:
# # ↓ De quel fichier ?, ↓ Quelle permission ?
# file.write(texte)
#
# async def on_ready(self):
# print('--- We have successfully logged in as {0.user}'.format(self))
# # Lire la description depuis le fichier et mettre à jour la présence du bot
# bot.description = read_description_from_file()
# await update_bot_presence()
#
#
# # Commande pour changer le pseudo du bot
# @bot.command()
# async def name(ctx, *, new_name: str):
# server_id = ctx.guild.id
#
# try:
# guild = bot.get_guild(server_id)
#
# if guild:
# # Changer le pseudo du bot sur le serveur spécifié
# await guild.me.edit(nick=new_name)
# await ctx.send(f"Le pseudo du bot a bien été changé en {new_name}.")
# else:
# await ctx.send("Impossible de trouver le serveur spécifié.")
#
# except discord.HTTPException as e:
# await ctx.send("Une erreur s'est produite lors du changement de pseudo du bot. Veuillez regarder la console.")
# print(e)
#
#
# # Fonction qui met à jour automatiquement (et en permanence) le statut personnalisé du bot.
# async def update_bot_presence():
# activity = discord.Game(name=bot.description) # Ces deux lignes doivent être appelées en permanence par
# await bot.change_presence(activity=activity) # la fonction on_ready. C'est pourquoi elles ne sont pas écrites dans
# # la commande 'description'.
#
#
# # Commande pour changer le statut personnalisé du bot.
# @bot.command()
# async def description(ctx, *, texte: str):
# bot.description = texte
# write_description_to_file(texte)
# await update_bot_presence()
# await ctx.send(f"La description du bot a été mise à jour.")
#
#
# # Commande pour changer la photo de profil du bot.
# @bot.command()
# async def pfp(ctx, *, url: commands.clean_content):
# try:
# server_id = ctx.guild.id
# guild = bot.get_guild(server_id)
#
# if guild:
# # Récupération de l'image.
# async with aiohttp.ClientSession() as session:
# async with session.get(url) as resp: # Malgré l'erreur, le code fonctionne toujours.
# if resp.status != 200:
# return await ctx.send(f"Impossible de télécharger l'image. Statut HTTP : {resp.status}")
#
# # La photo de profil prend la forme de l'image.
# data = await resp.read()
# await bot.user.edit(avatar=data)
# await ctx.send("Photo de profil mise à jour. Redémarrez le bot pour voir le résultat.")
# else:
# # Attraper toutes les erreurs possibles.
# await ctx.send("Impossible de trouver le serveur discord spécifié. Veuillez contactez les développeurs du projet.")
# except aiohttp.InvalidURL:
# await ctx.send("L'URL fournie est invalide. Veuillez vérifier qu'elle ne contient pas de guillemet, "
# "ni d'apostrophe et réessayer.")
# except Exception as e:
# await ctx.send(f"Une erreur s'est produite : {str(e)} Vérifiez votre configuration du bot ou contactez "
# f"les développeurs du projet.")
Loading