使用discord.py ping命令

时间:2017-09-19 18:01:04

标签: python discord discord.py

我已经在很多地方看过了,但我找不到在discord.py中发出ping命令的方法:

@client.command(pass_context=True)
async def pong(ctx):
    await client.say(pingtime)

类似这样的事情

14 个答案:

答案 0 :(得分:4)

此时您应该使用rewrite branch of discord.py

这将是我使用命令扩展名的解决方案。

@bot.command()
async def ping(ctx):
    await ctx.send('Pong! {0}'.format(round(bot.latency, 1)))

答案 1 :(得分:3)

使用此代码

@bot.command(pass_context=True)
async def ping(ctx):
    """ Pong! """
    await delete_message(ctx.message)
    before = time.monotonic()
    message = await ctx.send("Pong!")
    ping = (time.monotonic() - before) * 1000
    await message.edit(content=f"Pong!  `{int(ping)}ms`")
    print(f'Ping {int(ping)}ms')

答案 2 :(得分:2)

此ping命令会从bot和Disord之间花费多长时间返回响应

import discord 
import time
Client = commands.Bot(commands.when_mentioned_or('...'))


@Client.command(pass_context=True)
async def ping_ms(ctx):
    t = await Client.say('Pong!')
    ms = (t.timestamp-ctx.message.timestamp).total_seconds() * 1000
    await Client.edit_message(t, new_content='Pong! Took: {}ms'.format(int(ms)))

答案 3 :(得分:2)

在discord.py的重写分支上,可以使用以下命令:

@bot.command()
def ping(ctx):
    await ctx.send(f'My ping is {bot.latency}!')

当然,如果您使用其他变量名,则需要更改bot

答案 4 :(得分:1)

@client.command(pass_context=True)
async def ping(ctx):
    now = datetime.datetime.utcnow()
    delta = now-ctx.message.timestamp
    await client.say('{}ms'.format(delta(microseconds=1)))

这不会超级有效,老实说,没有真正的方法来测试这个,因为你无法运行脚本客户端以获得时间。但这将测试脚本开始时系统时钟与discord表示收到消息之间的时间。不是ping,不是任何定义,但如果你的机器人速度减慢,它会给你一个提示。

答案 5 :(得分:1)

可能有上百万行代码可用于此目的,但这就是我使用的

@client.command()
async def ping(ctx):
     await ctx.send(f'Pong! In {round(client.latency * 1000)}ms')

答案 6 :(得分:1)

这个问题的大部分答案都没有围绕 ping,所以我写了一个脚本。

使用这个:

async def ping(ctx):
    await ctx.send(f'Pong! {round (bot.latency * 1000)} ms')

答案 7 :(得分:0)

Discord.py async not REWRITE

使用EMBED

@bot.command(pass_context=True)
async def ping(ctx):
    embed = discord.Embed(title="Pong! :ping_pong:")
    await bot.say(embed=embed)

没有EMBED

@bot.comand(pass_context=True)
async def ping(ctx):
    await bot.say(":ping_pong: Pong!")

答案 8 :(得分:0)

您可以使用message.author.mention。举个例子(这可能不是你使用异步编码的方式):

await client.send_message(message.channel, str(message.author.mention))

只是一个基本的例子:D

答案 9 :(得分:0)

好吧,以前我向您展示了如何做一个简单的事情。 现在我去把它变得更好 如下

[1      3       4],[2   3       4], [2      4   4   6]

这是新版本,它更好,并且可以100%工作,因为我是在自己的机器人中使用它的

答案 10 :(得分:0)

@client.command(pass_context=True)
    async def ping(ctx):
        """Shows the Client Latency."""
        t = await client.say('Pong!')
        ms = (t.timestamp-ctx.message.timestamp).total_seconds() * 1000
        await client.edit_message(t, new_content='Pong! Client Latency: {}ms'.format(int(ms)))

答案 11 :(得分:0)

discord.py重写的更新答案:

    async def latency(ctx):
        time_1 = time.perf_counter()
        await ctx.trigger_typing()
        time_2 = time.perf_counter()
        ping = round((time_2-time_1)*1000)
        await ctx.send(f"ping = {ping}")

await ctx.trigger_typing()使"Blank" is typing...文本出现。 通过这样做,我们可以根据机器人发送等待ctx.trigger_typing()所花费的时间来半准确地获取机器人的ping。当然,您需要import Time并定义整个bot命令。

答案 12 :(得分:0)

@client.command() #ping
async def ping(ctx):
    await ctx.send(f'Pong! In {round(client.latency * 1000)}ms')

答案 13 :(得分:0)

我这样做的方法只是获得平均延迟。

tests = 500 #the amount of tests to conduct
latency_list = [] #this is where the tests go
for x in range(tests): #this is the loop
    latency = client.latency() #this gathers the latency
    latency_list.append(latency) #puts the latency in the list
lavg = sum(latency_list)/test #averages the list out
print(lavg)

尽管,该节目的真正明星是client.latency(),但我建议使用上面的代码。