我正在使用Python处理User Discord Bot。如果漫游器所有者键入!DM @user
,则漫游器将DM所有者所提及的用户。
@client.event
async def on_message(message):
if message.content.startswith('!DM'):
msg = 'This Message is send in DM'
await client.send_message(message.author, msg)
答案 0 :(得分:2)
由于向v1.0进行了大量迁移,因此send_message
不再存在。
相反,他们在每个端点(成员,行会等)上migrated to .send()
。
v1.0的示例为:
async def on_message(self, message):
if message.content == '!verify':
await message.author.send("Your message goes here")
哪位DM会!verify
的发送者。明智的做法是:
for guild in client.guilds:
for channel in guild.channels:
channel.send("Hey yall!")
如果您想向所有服务器以及该漫游器所在的所有通道发送“ hi yall”消息。
由于(通过评论判断)可能不是很清楚,所以棘手的部分可能会从客户端/会话中获得用户的身份句柄。如果您需要向on_message
事件之外。您将必须:
但是发送给用户的唯一方法是通过客户端身份句柄,该句柄位于on_message
中或位于message.author
中的频道中。为了更好地理解这一点,我建议阅读how to send a DM?上的官方文档。
答案 1 :(得分:0)
最简单的方法是使用discord.ext.commands
扩展名。在这里,我们使用converter获取目标用户,并使用keyword-only argument作为发送给他们的可选消息:
from discord.ext import commands
import discord
bot = commands.Bot(command_prefix='!')
@bot.command(pass_context=True)
async def DM(ctx, user: discord.User, *, message=None):
message = message or "This Message is sent via DM"
await bot.send_message(user, message)
bot.run("TOKEN")
答案 2 :(得分:0)
我过去曾经使用过此命令,并且我认为它对我来说最有效:
@bot.command(pass_context=True)
async def mall(ctx, *, message):
await ctx.message.delete()
for user in ctx.guild.members:
try:
await user.send(message)
print(f"Successfully DMed users!")
except:
print(f"Unsuccessfully DMed users, try again later.")
答案 3 :(得分:0)
@bot.command()
async def dm(ctx, user: discord.User, *, message=None):
if message == None:
message = "Hi!"
embed = make_embed(title=f"Sent by {user}", desc=message)
await user.send(embed=embed)
await ctx.send("Message sent!")```
答案 4 :(得分:0)
我注意到我放入代码行中的每个代码都不能完全工作,所以我向它们添加了自己的位,并成功了!将此添加到您的机器人代码时,请不要忘记在此处显示机器人名称的地方添加机器人名称。它只会向发送它的人发送 DM,但您可以每天更改它所说的内容,以便为使用该命令的每个人带来惊喜。它每次都对我有用。
@client.command()
async def botdm(ctx):
await ctx.message.author.send('hi my name is *bot name here* and i am a bot!')