Discord.py 以间隔将 dm 发送给多个特定成员
Posted
技术标签:
【中文标题】Discord.py 以间隔将 dm 发送给多个特定成员【英文标题】:Discord.py sending dm to multiple specific members with interval 【发布时间】:2022-01-10 15:02:02 【问题描述】:我想每 24 小时将 dm 发送给少数特定用户,例如 3-5 人,但不是服务器上的所有用户,因此我无法迭代服务器中的每个人。我想我可以将任务用于循环,但我不知道下一步该做什么我能做什么?
【问题讨论】:
【参考方案1】:你可以使用filter
函数。
例如:
USER_IDS = [123, 1234] # specify user ID’s here
@tasks.loop(hours=24)
async def send_messages():
guild = bot.get_guild(guild_id) # specify guild_id here
for member in filter(lambda member_: member_.id in USER_IDS, guild.members):
await member.send("test message")
send_messages.start()
【讨论】:
import discord import asyncio from discord.ext import commands, tasks Bot = commands.Bot(command_prefix="//") USER_IDS = [userid1,userid2] @Bot.event async def on_ready(): print("0.user is online rn".format(Bot)) @tasks.loop(seconds=5) async def send_messages(): guild = Bot.get_guild(myguildid) print("testt") for member in filter(lambda member_: member_.id in USER_IDS, guild.members): await member.send("test dm") @send_messages.before_loop async def before(): await Bot.wait_until_ready()
这样做了,但它只在控制台上给 testt 而不发送任何 dms 任何想法?对格式感到抱歉,我在这里很新
你调用send_messages.start()
方法了吗?
是的,我在主文件的最后一行调用了它,我忘了在这里添加它
您需要为它启用Members Intent
。首先在 Discord 开发者门户网站上启用它。然后将其添加到您的代码中:Bot = commands.Bot(command_prefix="//", intents=discord.Intents.all())
以上是关于Discord.py 以间隔将 dm 发送给多个特定成员的主要内容,如果未能解决你的问题,请参考以下文章
Discord.py bot - 如何让机器人在 DM 中向我发送用户的消息?
当另一个人使用命令时,如何对 discord.py 机器人进行编程以通知我?