【问题标题】:Sending a message to everyone in a discord server向不和谐服务器中的每个人发送消息
【发布时间】:2020-08-16 13:57:48
【问题描述】:

我正在尝试让我的 discord 机器人向我的 discord 服务器上的每个人发送消息,但我尝试过的所有答案都对我不起作用。到目前为止我有这段代码,但不知道它是否有效,因为我没有任何人不和谐(我正在为朋友制作)

代码如下:

    import discord

    def read_token():
    with open("token.txt", "r") as f:
        lines = f.readlines()
        return lines[0].strip()

    token = read_token()

    client = discord.Client()

    @client.event
    async def on_message(message):
         if message.content.find("!hello") != -1:
         await message.channel.send("Hi") # If the user says !hello we will 
         send back hi

      if message.content.startswith('Message everyone'):
      for guild in client.guilds:
          for discord.Member in guild.members:
            await message.discord.Member.send("sup")

client.run(token)

【问题讨论】:

  • 您是想向所有用户发送 DM,还是只想提及Hello @everyone 这样的每个人?
  • 我正在尝试向服务器中的所有用户发送 dm。我将发布到目前为止的更新代码。

标签: python bots discord discord.py


【解决方案1】:

您可以使用create_dm() 为成员创建一个 dm。

在检查中添加以跳过任何机器人。

使用lower() 处理任何情况的消息。

仅供参考 - 在不和谐中创建公会非常简单,所以你可以测试,如果你不能测试它真的不值得尝试。

试试这个:

@client.event
async def on_message(message):
    if message.author == client.user:
        return
    if message.content.find("!Hello") != -1:
        await message.channel.send('Hi')
    if message.content.lower().startswith('message everyone'):
        for guild in client.guilds:
            await sleep(.25)
            members = guild.members
            for member in members:
                if member.bot is True:
                    continue
                await sleep(.25)
                channel = await member.create_dm()
                await channel.send('sup')

【讨论】:

  • 对于睡眠功能,sleep = discord.utils.sleep?我还意味着我的服务器 atm 中没有其他人来查看其他人是否有 dm
  • 使用 asyncio 进行睡眠 - from asyncio import sleep。在测试中得到它。我创建了另一个用户,让一个用户登录应用程序,另一个用户登录浏览器。
猜你喜欢
  • 1970-01-01
  • 2020-08-20
  • 2019-06-25
  • 2021-04-03
  • 2018-12-09
  • 2020-11-12
  • 2022-01-08
  • 2022-11-02
  • 2020-03-13
相关资源
最近更新 更多