Voici mon code pour un robot discord. J'essaye de lui faire changer le nom du serveur en nombre de membres dans le serveur. J'ai regardé cet exemple mais cela n'a pas fonctionné. Quelqu'un peut-il aider? Je ne reçois aucune erreur et ma sortie est également ci-dessous. Quand j'essaye d'ajouter le @ bot.event pour on_member_join, il ne semble même pas y arriver.
import discord import json import asyncio from discord.ext.commands import Bot import aiohttp from discord.utils import get import json from settings import bots import pyjokes TOKEN = open("token.txt").readlines()[0].strip() prefix = "~" bot = Bot(command_prefix=prefix, description="Ready to serve!") # Runs when the bot is activated @bot.event async def on_ready(): print('Logged in as') print(bot.user.name) print(bot.user.id) print('------') print(discord.utils.oauth_url(bot.user.id)) # @bot.event # async def on_member_join(member): # print("asdsddad") # await member.send("Hello!") @bot.command(pass_context=True) async def ping(ctx): ''' @pong! ''' await ctx.send('{0} Pong!'.format(ctx.author.mention)) @bot.command(pass_context=True) async def joke(ctx): ''' Tells a random programmer joke ''' await ctx.send('{0} {1}'.format(ctx.author.mention, pyjokes.get_joke())) @bot.command(pass_context=True) async def get_server_id(ctx): ''' Get's the server's ID! ''' await ctx.send('{0}, {1}'.format(ctx.author.mention, ctx.message.guild.id)) @bot.event async def on_member_join(member): print("I made it to join!") await member.send('Welcome to the server!') @bot.command(pass_context=True) async def members(ctx): ''' Get members ''' members = 0 for m in ctx.guild.members: members = m.guild.member_count members -= bots[ctx.message.guild.id] await ctx.send('{0} There are '.format(ctx.author.mention)+str(members)+" members") @bot.command(pass_context=True) async def change_name(ctx): ''' Change the server name! ''' members = 0 for m in ctx.guild.members: members = m.guild.member_count members -= bots[ctx.message.guild.id] await ctx.guild.edit(name = "The " + str(members) + " Dwarves") bot.run(TOKEN)
Logged in as Marwin 543266782601936898 ------ https://discord.com/oauth2/authorize?client_id=543266782601936898&scope=bot
3 Réponses :
Vous devez ajouter le décorateur d'événement :
@bot.event async def on_member_join(member): ...
J'ai essayé cela dans le passé, mais cela n'a pas fonctionné. Je ne sais pas pourquoi.
Vous créez à la fois un Client
et un Bot
, vous ne devez utiliser que l'un ou l'autre.
Changez tous vos décorateurs @client
décorateurs @bot
ou changez votre ligne client = Bot(...)
en client = Bot(...)
et débarrassez-vous de client = discord.Client()
J'ai supprimé tout cela, mais cela ne l'a pas résolu :(
Veuillez mettre à jour votre code pour que je puisse le consulter à nouveau
Votre on_member_join
est commenté, lorsque je le on_member_join
-commente, votre code fonctionne pour moi
Hé, utilisez-vous discord.py 1.5? Si tel est le cas, veuillez consulter ma réponse ici sur les intentions de la passerelle
Il semble que j'utilise la version 1.1
v1.1 a été publié il y a plus de 2 ans, veuillez mettre à jour au moins v1.4.2
Merci d'avoir eu l'idée de regarder la version, merci!
J'ai mis à jour vers la v 1.5 et ça l'a corrigé!
Pouvez-vous ajouter des codes d'erreur, des fichiers journaux ou quels effets le code produit? Plus d'informations aideront les gens à répondre à votre question.
@ bob0the0mighty je l'ai fait