如何在on_member_join()discord.py中向成员发送私人消息?

时间:2020-03-04 12:22:41

标签: python python-3.x discord.py discord.py-rewrite

这就是我所拥有的:

@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 个答案:

答案 0 :(得分:2)

事件on_member_join()仅接受member作为有效参数(请参见doc)。因此,您尝试执行的操作:on_member_join(ctx, member)不会成功。您需要改用以下命令:on_member_join(member)

如果您按如下方式使用事件:

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

您可以直接将消息发送给加入服务器的成员。因为您使用此事件获得了member对象。

答案 1 :(得分:1)

我不知道发生了什么,从一天到第二天,该机器人停止向新成员发送欢迎消息。但是我终于能够解决它。 我只需要添加这两行代码。 intents = discord.Intents() intents.members = True Read

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)