在文本通道中随机选择用户

Posted

技术标签:

【中文标题】在文本通道中随机选择用户【英文标题】:Randomly choosing a user in a text channel 【发布时间】:2020-07-28 19:10:48 【问题描述】:

我使用 discord.js 制作了一个不和谐机器人,它有一些有用的命令。我想再添加一个,它会从我使用该命令的文本频道中随机标记一个人。例如,如果我在#test123 频道中使用该命令,它将标记一个具有 test123 作为角色的随机人。

【问题讨论】:

你必须展示你试图让它工作的东西 【参考方案1】:

这仅适用于 Discord.js v12/v13:

const Client = require('discord.js')

const client = new Client()

client.on('message', async (author, channel, content, guild) => 
  if (
    // author of message is a bot
    author.bot ||
    // message is in a DM
    !guild ||
    // message doesn't start with #
    !content.startsWith('#')
  ) return

  // gets rid of the #
  const name = content.slice(1)

  try 
    // uncomment this out if you don't want people to be able to do this with @everyone
    // the backslash stops the bot from pinging everyone
    // if (name === '@everyone') return await channel.send("You can't do this with \\@everyone!")

    const role = guild.roles.cache.find(r => r.name === name)
    if (!role) return await channel.send(`$name is not a valid role!`)
    if (!role.members.size) return await channel.send(`There are no members with the role $role.`)

    // discord.js automatically tags/mentions a member if it is converted to a string
    await channel.send(`$role.members.random()`)
   catch (error) 
    // you could also send a message or something
    console.error(error)
  
)

client.login('your token')

对于 v11 只需替换

    const role = guild.roles.cache.find(r => r.name === name)

    const role = guild.roles.find(r => r.name === name)

【讨论】:

以上是关于在文本通道中随机选择用户的主要内容,如果未能解决你的问题,请参考以下文章

批量选择随机文本文件

.NET C# - 文本文件中的随机访问 - 没有简单的方法?

如何使用 pyspark 从 python 列表中选择随机文本值?

用c#编写猜数游戏要求用户在文本框中输入1到10之间的一个数字。然后单击[猜猜]按钮产生一个随机数字,用户

随机替换密码 Java

[Blender]使用通道ID,快速为画面元素分层