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}')