3 python bots ping server discord
我正在为我的朋友们制作一个不和谐的机器人。!status 这一功能旨在对服务器执行 ping 操作并报告回复。
from tcping import Ping
if message.content.startswith('!status'):
ping = Ping('HOST', 25565)
response = ping.ping(1)
await message.channel.send(str(response))
Run Code Online (Sandbox Code Playgroud)
问题是,机器人只回复“无”。有什么帮助吗?
我猜你想看看是否有可用的东西(而不是 ping)...如果这是真的,这可能对你有用...
import socket
def check(host,port,timeout=2):
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #presumably
sock.settimeout(timeout)
try:
sock.connect((host,port))
except:
return False
else:
sock.close()
return True
print(check('google.com',1234,timeout=1))
print(check('google.com',443,timeout=1))
Run Code Online (Sandbox Code Playgroud)
也许你想计时...很简单
import time
def timed_check(host,port,timeout=2):
t0 = time.time()
if check(host,port,timeout):
return time.time()-t0 # a bit inexact but close enough
print(timed_check('google.com',1234,timeout=1))
print(timed_check('google.com',443,timeout=1))
Run Code Online (Sandbox Code Playgroud)
或者也许你想要统计数据
def timed_stats_check(host,port,timeout=2,retries=5):
minimum,maximum,sumation = float('inf'),float('-inf'),0
errors = 0
for i in range(retries):
t = timed_check(host,port,timeout)
if t is None:
print("ERROR Unreachable...")
errors += 1
else:
print(f"Time {t:0.5f}s")
maximum = max(maximum,t)
minimum = min(minimum,t)
sumation += t
if retries > 0:
print(f"Max Time: {maximum:0.5f}s")
print(f"Min Time: {minimum:0.5f}s")
print(f"Average: {sumation/(retries-errors):0.2f}s")
print(f"Failures: {errors}/{retries}")
Run Code Online (Sandbox Code Playgroud)