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 警告命令(帮助我)mass dm

当另一个人使用命令时,如何对 discord.py 机器人进行编程以通知我?

((Discord.py)向所有服务器的所有成员发送dm或]

我如何 dm 与 discord.py 的人

如何在 discord.py 中获取 dm [重复]