Получаете пинг с удаленного сервера в Discord.py? - PullRequest
0 голосов
/ 08 февраля 2020

Я пишу бот-диск с Discord.py для моего личного сервера. Я и мой друг - частые игроки, и мне нравится играть в League of Legends, поэтому я подумал, что отличной функциональностью для нашего бота будет отображение текущей задержки между нами и серверами Riot. Пока у меня есть этот прикрепленный код, но он всегда возвращает пинг, с которого размещен бот. Есть ли способ для меня, чтобы получить пинг человека, который дает команду боту? Код использует pythonping, найденный здесь https://pypi.org/project/pythonping/. Спасибо:)

import discord
from discord.ext import commands
from pythonping import ping

client = commands.Bot(command_prefix = '.')

@client.event
async def on_ready():
    print('Bot is ready.')

@client.command()
    async def lolping(ctx):
    server = '104.160.131.3'
    response = ping(server, size=40, count = 10)
    print(response)
    await ctx.send(f'Current NA LOL Ping: {response.rtt_avg_ms}ms')

Ответы [ 2 ]

1 голос
/ 08 февраля 2020

Добавление к ответу @ Benjin ...

Согласно определению ping , машина, отправляющая пинг (в данном случае бот-дискордант), измеряет время, необходимое для получить свой пакет обратно. Следовательно, поскольку бот не может отправить пакет с компьютера пользователя, он не может измерить его пинг.

Возможно, вы могли бы заставить бота предоставить ссылку на страницу отчета о задержке Riot здесь , чтобы пользователи могли проверить себя в зависимости от своего местоположения. Однако, похоже, это работает только для определенных мест, и я не знаю, насколько это полезно.

Удачи!

1 голос
/ 08 февраля 2020

Не возможно. Причина, по которой он всегда возвращает пинг бота, заключается в том, что бот инициирует запрос пинга. Команда просто говорит боту сделать это.

Бот не может запустить запрос ping с другого компьютера.

...