无法弄清楚为什么我的 Discord 机器人没有返回正确的服务器状态

cant figure out why my discord bot isnt returning correct status of server

提问人:Brant Robinson 提问时间:11/8/2023 更新时间:11/8/2023 访问量:31

问:

这是我想出的代码。 它运行并发送消息“服务器脱机”,但未脱机。 我也尝试使用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,如果这就是原因?

Python 套接字 服务器 discord.py 机器人

评论

0赞 Kejax 11/8/2023
您尝试连接到的端口上正在运行什么?

答: 暂无答案