Discord.py:如何通过用户 ID 变量 Ping 用户

时间:2021-04-13 15:07:01

标签: python discord.py

我有一个队列系统机器人,但我需要存储作者姓名/ID。所以我有2个命令。队列数为 0 和 1 时的一个。我可以轻松使用 message.author.mention,但是我将如何 ping 同一消息中的第一个 ID(队列 = 0 的 ID)。

代码:

import discord
import os
from discord.utils import get
from discord.ext import commands

#run the Bot and a message to make sure it ran
client = discord.Client()

global queue
queue = 0
global author
author = " "
global author2
author2 = " "

@client.event
async def on_ready():
    print('We have logged in as {0.user}'.format(client))
    await client.change_presence(activity=discord.Game('Minceraft'))

@client.event
async def on_message(message): #Defines Message
  
  #If You Queue, And Role Requirement to Do So
  if message.content.startswith('-queue duos'): 
    global queue
    if queue == 0:
      role = discord.utils.get(message.guild.roles, id=830557149863608367)

      if role in message.author.roles:

        print('you have queued')
      
        global author
        author = message.author.id
        print(author)

        #Adds Role Duos
        role = discord.utils.get(message.guild.roles, id=830219965549510656) 
        await message.author.add_roles(role) 

        #Removes Role NoQueue
        role4 = discord.utils.get(message.guild.roles, id=830557149863608367)
        await message.author.remove_roles(role4)
      
        #Gives Message
        await message.channel.send('you have joined the duos queue sit tight!')
          
        queue += 1
        
        await message.channel.send(queue)

    elif queue == 1:
      role = discord.utils.get(message.guild.roles, id=830557149863608367)

      if role in message.author.roles:

        print('you have queued')
      
        global author2
        author2 = message.author.id
        print(author2)

        #Adds Role Duos
        role = discord.utils.get(message.guild.roles, id=830219965549510656) 
        await message.author.add_roles(role) 

        #Removes Role NoQueue
        role4 = discord.utils.get(message.guild.roles, id=830557149863608367)
        await message.author.remove_roles(role4)
      
        #Gives Message
        await message.channel.send('you have joined the duos queue sit tight!')
        queue += 1
        

        #Work On Pings Here
        
        await message.channel.send(message.author.mention)
        await message.channel.send(author)
        queue = 0

    #Is They Already Queued and Have Duos Role  
    else:
      await message.channel.send('You Already Queued!')


  #if the message is unqueue duos command
  if message.content.startswith('-unqueue duos'):
    #Role Requirement
    role = discord.utils.get(message.guild.roles, id=830219965549510656)
    if role in message.author.roles:
      print('you have unqueued')
      

      #Remove Duos Role
      role2 = discord.utils.get(message.guild.roles, id=830219965549510656)
        
      await message.author.remove_roles(role2)
      #Adds NoQueue Role
      role3 = discord.utils.get(message.guild.roles, id=830557149863608367)

      await message.author.add_roles(role3)
    
      await message.channel.send('You Have Unqueued Duos!')
      
      queue -= 1
    #Already Not In a Queue  
    else:
        await message.channel.send('You Are Not In a Queue!')
  


#Runs Token From The .env File
client.run(os.getenv('TOKEN'))

TL;DR:我想使用全局字符串 ping 某人,因为我不能同时对 2 个人或在同一个 message.author.mention 命令中使用 message.channel.send

1 个答案:

答案 0 :(得分:0)

<@USERID> 是您提及某人的方式。只需获取 id 并为此更改 USERID。你可以做的是:

await message.channel.send(f"<@{USERID}>")

因为 f 字符串为你格式化东西。该代码会提到某人。