0
votes

discord.py on_member_join ne fonctionne pas @ bot.event

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.

Production

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)

Code

Logged in as
Marwin
543266782601936898
------
https://discord.com/oauth2/authorize?client_id=543266782601936898&scope=bot


2 commentaires

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


3 Réponses :


0
votes

Vous devez ajouter le décorateur d'événement :

@bot.event
async def on_member_join(member):
    ...


1 commentaires

J'ai essayé cela dans le passé, mais cela n'a pas fonctionné. Je ne sais pas pourquoi.



0
votes

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()


7 commentaires

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!



0
votes

J'ai mis à jour vers la v 1.5 et ça l'a corrigé!


0 commentaires