我已经在很多地方看过了,但我找不到在discord.py
中发出ping命令的方法:
@client.command(pass_context=True)
async def pong(ctx):
await client.say(pingtime)
类似这样的事情
答案 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(),但我建议使用上面的代码。