web-dev-qa-db-ja.com

on_member_join()discord.pyにメンバーにプライベートメッセージを送信する方法?

これが私が持っているものです。

@client.command(pass_context=True)
@client.event
async def on_member_join(ctx, member):
    print(f'{member} has joined a server.')
    await ctx.send(f"Hello {member}!")
    await ctx.member.send(f"Welcome to the server!")
 _

私は彼が参加したときにルールとコマンドリストを含むプライベートメッセージを送信するためのボットが必要です。

助けてください!

2
MicasiO

イベントon_member_join()は有効なパラメータとしてメンバーのみを受け入れます( doc )。したがって、あなたがやろうとしようとしていること:on_member_join(ctx, member)、うまくいかない。代わりにこれを使用する必要があります。on_member_join(member)

次のようにイベントを使用した場合

@client.event
async def on_member_join(member):
    await member.send('Private message')
 _

サーバーに参加したメンバーに直接メッセージを送信できます。このイベントを使用して メンバー オブジェクトを取得するからです。

1
Deru

私は何が起こったのかわかりません、ある日から次のボットが新しいメンバーに歓迎されたメッセージを送る停止しました。しかし、私はついにそれを解決することができました。これら2行のコードを追加しなければならなかった。 intents = discord.Intents()intents.members = True読み取り

import discord
from discord.ext import commands

#try add this 
intents=intents=discord.Intents.all()

#if the above don't work, try with this
#intents = discord.Intents()
#intents.members = True

TOKEN = 'your token'
bot=commands.Bot(command_prefix='!',intents=intents)

#Events
@bot.event
async def on_member_join(member):
    await member.send('Private message')

@bot.event
async def on_ready():
    print('My bot is ready')

bot.run(TOKEN)
 _
1
ivansaul