Bot Discord qui ne se connecte plus

Fermé
thepuremousline - 23 juil. 2020 à 20:29
 thepuremousline - 31 juil. 2020 à 08:09
Bonjour,

En ce moment j'essaie de coder un bot Discord en python 3.7 qui permettrai de jouer au Loup Garou (le jeu de rôle) en vocal. Tout ce passait très bien jusqu'à que je relance mon logiciel pour éditer (pycharm) et mon bot ne veut plus se connecter voici l'erreur : Traceback (most recent call last):
File "C:/Users/thepuremousline/PycharmProjects/loup garou/main.py", line 89, in <module>
bot.run(jeton)
File "C:\Users\thepuremousline\AppData\Local\Programs\Python\Python37\lib\site-packages\discord\client.py", line 611, in run
loop = self.loop
AttributeError: 'str' object has no attribute 'loop'

Voici le code :

import discord

from discord.utils import get
from discord.ext import commands
from discord.ext.commands import has_permissions

bot = commands.Bot(command_prefix="!")

# détécter quand le bot est prêt ("allumé")
@bot.event
async def on_ready():
print("bot prêt")
await bot.change_presence(status=discord.Status.idle,
activity=discord.Game("Loup Garou (!info)"))

# dictionnaire / variable
roles2 = ["loup", "loup", "loup", "sorcière", "voyante", "chasseur", "garde", "assasin", "cupidon"]
playeurs = []

# détécter réaction
@bot.event
async def on_raw_reaction_add(payload):
emoji = payload.emoji.name
canal = payload.channel_id
message = payload.message_id
roles = bot.get_guild(payload.guild_id).roles
joueur_role = get(roles, name="Joueur")
membre = bot.get_guild(payload.guild_id).get_member(payload.user_id)
if canal == 730364772444405771 and message == 730365190180438016 and emoji == "lg":
await membre.add_roles(joueur_role)
await membre.send("tu joueras la prochaine partie")

# détécter si réaction enlevé
@bot.event
async def on_raw_reaction_remove(payload):
emoji = payload.emoji.name
canal = payload.channel_id
message = payload.message_id
roles = bot.get_guild(payload.guild_id).roles
joueur_role = get(roles, name="Joueur")
membre = bot.get_guild(payload.guild_id).get_member(payload.user_id)
if canal == 730364772444405771 and message == 730365190180438016 and emoji == "lg":
await membre.remove_roles(joueur_role)
await membre.send("tu ne joueras pas la prochaine partie")

# commandes
@bot.command()
@commands.has_role("maitre du jeu")
async def start(ctx):
await ctx.send("La game va commencer")
print(ctx)

@bot.command()
async def compo(ctx):
nmbrole = len(roles2)
await ctx.send(f"C'est une compo pour {nmbrole} personnes avec : \r{roles2}")

@bot.command()
@commands.has_role("maitre du jeu")
async def add(ctx, arg):
await ctx.send(f"Role {arg} ajouté au jeu")
roles2.append(arg)

@bot.command()
@commands.has_role("maitre du jeu")
async def remove(ctx, arg):
await ctx.send(f"Role {arg} enlevé du jeu")
roles2.remove(arg)

@bot.command()
@commands.has_role("maitre du jeu")
async def clear(ctx):
await ctx.send("Les roles ont été supprimé")
roles2.clear()

@bot.command()
async def info(ctx):
await ctx.send("__**Comment jouer ?**__ (pour les joueurs)\rPour pouvoir participer il faut premièrement ajouter la réaction :lg: au message dans le channel #joueur\r__**Les commandes**__ (pour le maître du jeu)\r__!compo__ pour voir la composition du jeu\r__!add (role)__ pour pouvoir ajouter son role à la composition mais ne mettez pas un role en plusieurs mots ou alors collez-les\r__!remove (role)__ pour enlever un role de la composition\r__!clear__ pour supprimer tous les roles\ret __!start__ pour commmencer la game.")

bot = discord.Client

# connection au serveur
jeton = "..."
print("lancement du bot...")

# lancement du bot
bot.run(jeton)

PS : si quelqu'un sait comment je pourrai récupérer la liste de tous les gens qui possède un certain rôle ça pourrait m'aider ^^.

PS2 : Je viens de débuter le code soyez indulgents.

Merci d'avance à tous ceux qui essaieront de m'aider.


Configuration: Windows / Chrome 84.0.4147.89

1 réponse

Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
24 juil. 2020 à 12:58
Bonjour,

Peux-tu re poster ton code avec les balises :

https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
0
thepuremousline
31 juil. 2020 à 08:09
import discord

from discord.utils import get
from discord.ext import commands
from discord.ext.commands import has_permissions

bot = commands.Bot(command_prefix="!")

# détécter quand le bot est prêt ("allumé")
@bot.event
async def on_ready():
print("bot prêt")
await bot.change_presence(status=discord.Status.idle,
activity=discord.Game("Loup Garou (!info)"))

# dictionnaire / variable
roles2 = ["loup", "loup", "loup", "sorcière", "voyante", "chasseur", "garde", "assasin", "cupidon"]
playeurs = []

# détécter ré***@***
async def on_raw_reaction_add(payload):
emoji = payload.emoji.name
canal = payload.channel_id
message = payload.message_id
roles = bot.get_guild(payload.guild_id).roles
joueur_role = get(roles, name="Joueur")
membre = bot.get_guild(payload.guild_id).get_member(payload.user_id)
if canal == 730364772444405771 and message == 730365190180438016 and emoji == "lg":
await membre.add_roles(joueur_role)
await membre.send("tu joueras la prochaine partie")

# détécter si réaction enlevé
@bot.event
async def on_raw_reaction_remove(payload):
emoji = payload.emoji.name
canal = payload.channel_id
message = payload.message_id
roles = bot.get_guild(payload.guild_id).roles
joueur_role = get(roles, name="Joueur")
membre = bot.get_guild(payload.guild_id).get_member(payload.user_id)
if canal == 730364772444405771 and message == 730365190180438016 and emoji == "lg":
await membre.remove_roles(joueur_role)
await membre.send("tu ne joueras pas la prochaine partie")

# ***@***d()
@commands.has_role("maitre du jeu")
async def start(ctx):
await ctx.send("La game va commencer")
print(ctx)

@bot.command()
async def compo(ctx):
nmbrole = len(roles2)
await ctx.send(f"C'est une compo pour {nmbrole} personnes avec : \r{roles2}")

@bot.command()
@commands.has_role("maitre du jeu")
async def add(ctx, arg):
await ctx.send(f"Role {arg} ajouté au jeu")
roles2.append(arg)

@bot.command()
@commands.has_role("maitre du jeu")
async def remove(ctx, arg):
await ctx.send(f"Role {arg} enlevé du jeu")
roles2.remove(arg)

@bot.command()
@commands.has_role("maitre du jeu")
async def clear(ctx):
await ctx.send("Les roles ont été supprimé")
roles2.clear()

@bot.command()
async def info(ctx):
await ctx.send("__**Comment jouer ?**__ (pour les joueurs)\rPour pouvoir participer il faut premièrement ajouter la réaction :lg: au message dans le channel #joueur\r__**Les commandes**__ (pour le maître du jeu)\r__!compo__ pour voir la composition du jeu\r__!add (role)__ pour pouvoir ajouter son role à la composition mais ne mettez pas un role en plusieurs mots ou alors collez-les\r__!remove (role)__ pour enlever un role de la composition\r__!clear__ pour supprimer tous les roles\ret __!start__ pour commmencer la game.")

bot = discord.Client

# connection au serveur
jeton = "..."
print("lancement du bot...")

# lancement du bot
bot.run(jeton)
0