提问人:Brant Robinson 提问时间:11/8/2023 更新时间:11/8/2023 访问量:31
无法弄清楚为什么我的 Discord 机器人没有返回正确的服务器状态
cant figure out why my discord bot isnt returning correct status of server
问:
这是我想出的代码。 它运行并发送消息“服务器脱机”,但未脱机。 我也尝试使用ping命令,但似乎也不起作用。 想知道我是否缺少一个库来运行这些函数或一些可以解决问题的代码,或者它是否只是服务器拒绝我的 ping 和我的套接字连接。 我能够使用其他方法ping它,所以我认为情况并非如此。 有一次,我让它在线显示,但当它离线时,它没有发送通知,我无法弄清楚我做了什么来实现这一目标。
import os
import discord
import socket
import asyncio
TOKEN = os.environ['TOKEN']
CHANNEL_ID = 1170961716901855262
SERVER_IP = '5.62.122.45'
SERVER_PORT = 7783
client = discord.Client(intents=discord.Intents.all())
async def check_server_status():
prev_status = None
while True:
# Attempt to create a socket to the server on the specified port
try:
await client.wait_until_ready()
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.settimeout(5)
s.connect((SERVER_IP, SERVER_PORT))
current_status = "online"
except (socket.timeout, ConnectionRefusedError):
current_status = "offline"
if current_status != prev_status:
prev_status = current_status
channel = client.get_channel(CHANNEL_ID)
await channel.send(f"Server is now {current_status}")
await asyncio.sleep(60) # Check the server status every 60 seconds
@client.event
async def on_ready():
print(f'We have logged in as {client.user}')
client.loop.create_task(check_server_status())
client.run(TOKEN)
我尝试了其他 IP 地址和端口,它们都离线了。我使用 replit 所以 idk,如果这就是原因?
答: 暂无答案
评论