当有人加入时,机器人没有说欢迎,当我想这样做时,机器人没有发送dm。



Soo我希望我的机器人在有人加入时发送消息,但它在中不起作用

@client.event
async def on_member_join(member):
channel = discord.util.get(member.Guild, name='general')
await channel.send(f'Hey welcome to my server {member.mention}, hope you enjoy this server!')

以及我想让我的机器人给我按摩,然后把它发给我说的那个人,但这在中不起作用


massage = await client.wait_for('massage', check=check)
await ctx.send(f'send massage to {member} ')

await member.send(f'{ctx.member.mention} has a massage for you: n {massage}')

以及这是我的完整代码:

import os, discord,asyncio 
import keep_alive
from discord.ext import commands
client = commands.Bot(command_prefix="!")
token = os.environ.get('Token')
GUILD = os.environ.get('Guild')

@client.event
async def on_ready():
print(f'{client.user} is connected')
@client.command()
async def dm(ctx, member: discord.Member):
await ctx.send('what do u want to say bitch!')
def check(m):
return m.author.id == ctx.author.id

massage = await client.wait_for('massage', check=check)
await ctx.send(f'send massage to {member} ')

await member.send(f'{ctx.member.mention} has a massage for you: n {massage}')
@client.event
async def on_member_join(member):
channel = discord.util.get(member.Guild, name='general')
await channel.send(f'Hey welcome to my server {member.mention}, hope you enjoy this server!')




keep_alive.keep_alive()
client.run(token)

为了制作欢迎频道,使用get_channel而不是get更安全。因为在代码中,每次重命名频道时,都需要更改代码,但在删除并创建另一个同名频道之前,无法更改频道ID。

代码:

@client.event
async def on_member_join(member):
channel = client.get_channel(YOUR_CHANNEL_ID_GOES_HERE)
await channel.send(f'Hey welcome to my server {member.mention}, hope you enjoy this server!')

至于dm命令,我建议您将消息作为函数参数。此外,您还可以检查何时使用isinstance()功能DM'ing您的机器人。不过,在message参数之前有一个*。它的目的是收集你的所有信息,无论有没有间隔。

代码:

@client.command()
async def dm(ctx, member:discord.Member,*, message):
if isinstance(ctx.channel,discord.DMChannel):
await member.send(f'{ctx.member.mention} has a message for you: n {message}')

相关内容

最新更新