Discord.py机器人网关连接异常及命令重复发送问题求助
Discord.py机器人运行数小时后重复发消息+网关连接异常
我使用discord.py开发的Discord机器人,运行数小时后出现异常:执行命令或有用户加入服务器时,机器人会重复发送消息。同时日志中出现网关连接相关错误,具体报错信息如下:
[2023-06-30 19:25:07] [INFO ] discord.gateway: Shard ID 0 has connected to Gateway (Session ID: c8dbd2b6b4b92324b0200a1e0fd69f7e). [2023-06-30 19:25:07] [INFO ] client: succesfully connected [2023-06-30 19:25:10] [ERROR ] asyncio: Unclosed connection client_connection: Connection<ConnectionKey(host='gateway-us-east1-c.discord.gg', port=443, is_ssl=True, ssl=None, proxy=None, proxy_auth=None, proxy_headers_hash=None)> [2023-06-30 19:25:12] [INFO ] discord.gateway: Shard ID 0 has connected to Gateway (Session ID: ad38a534b4afcea5c7a5ff120ce0ca6e). [2023-06-30 19:25:12] [ERROR ] asyncio: Unclosed connection client_connection: Connection<ConnectionKey(host='gateway-us-east1-d.discord.gg', port=443, is_ssl=True, ssl=None, proxy=None, proxy_auth=None, proxy_headers_hash=None)> [2023-06-30 19:25:12] [INFO ] client: succesfully connected [2023-06-30 19:35:47] [ERROR ] discord.shard: Attempting a reconnect for shard ID 0 in 3.79s Traceback (most recent call last): File "/home/msktermi/virtualenv/gold1/3.9/lib64/python3.9/site-packages/aiohttp/connector.py", line 1152, in _create_direct_connection hosts = await asyncio.shield(host_resolved) File "/home/msktermi/virtualenv/gold1/3.9/lib64/python3.9/site-packages/aiohttp/connector.py", line 874, in _resolve_host addrs = await self._resolver.resolve(host, port, family=self._family) File "/home/msktermi/virtualenv/gold1/3.9/lib64/python3.9/site-packages/aiohttp/resolver.py", line 33, in resolve infos = await self._loop.getaddrinfo( File "/opt/alt/python39/lib64/python3.9/asyncio/base_events.py", line 861, in getaddrinfo return await self.run_in_executor( File "/opt/alt/python39/lib64/python3.9/concurrent/futures/thread.py", line 58, in run result = self.fn(*self.args, **self.kwargs) File "/opt/alt/python39/lib64/python3.9/socket.py", line 954, in getaddrinfo for res in _socket.getaddrinfo(host, port, family, type, proto, flags): socket.gaierror: [Errno -2] Name or service not known
Traceback (most recent call last): File "/home/msktermi/virtualenv/gold1/3.9/lib/python3.9/site-packages/discord/shard.py", line 192, in reidentify self.ws = await asyncio.wait_for(coro, timeout=60.0) File "/opt/alt/python39/lib64/python3.9/asyncio/tasks.py", line 479, in wait_for return fut.result() File "/home/msktermi/virtualenv/gold1/3.9/lib/python3.9/site-packages/discord/gateway.py", line 372, in from_client socket = await client.http.ws_connect(str(url)) File "/home/msktermi/virtualenv/gold1/3.9/lib/python3.9/site-packages/discord/http.py", line 537, in ws_connect return await self.__session.ws_connect(url, **kwargs) File "/home/msktermi/virtualenv/gold1/3.9/lib64/python3.9/site-packages/aiohttp/client.py", line 779, in _ws_connect resp = await self.request( File "/home/msktermi/virtualenv/gold1/3.9/lib64/python3.9/site-packages/aiohttp/client.py", line 536, in _request conn = await self._connector.connect( File "/home/msktermi/virtualenv/gold1/3.9/lib64/python3.9/site-packages/aiohttp/connector.py", line 540, in connect proto = await self._create_connection(req, traces, timeout) File "/home/msktermi/virtualenv/gold1/3.9/lib64/python3.9/site-packages/aiohttp/connector.py", line 901, in _create_connection _, proto = await self._create_direct_connection(req, traces, timeout) File "/home/msktermi/virtualenv/gold1/3.9/lib64/python3.9/site-packages/aiohttp/connector.py", line 1166, in _create_direct_connection raise ClientConnectorError(req.connection_key, exc) from exc aiohttp.client_exceptions.ClientConnectorError: Cannot connect to host gateway-us-east1-c.discord.gg:443 ssl:default [Name or service not known] [2023-06-30 19:36:22] [ERROR ] discord.shard: Attempting a reconnect for shard ID 0 in 1.64s Traceback (most recent call last): File "/home/msktermi/virtualenv/gold1/3.9/lib/python3.9/site-packages/discord/gateway.py", line 372, in from_client socket = await client.http.ws_connect(str(url)) File "/home/msktermi/virtualenv/gold1/3.9/lib/python3.9/site-packages/discord/http.py", line 537, in ws_connect return await self.__session.ws_connect(url, **kwargs) File "/home/msktermi/virtualenv/gold1/3.9/lib64/python3.9/site-packages/aiohttp/client.py", line 779, in _ws_connect resp = await self.request( File "/home/msktermi/virtualenv/gold1/3.9/lib64/python3.9/site-packages/aiohttp/client.py", line 560, in _request await resp.start(conn) File "/home/msktermi/virtualenv/gold1/3.9/lib64/python3.9/site-packages/aiohttp/client_reqrep.py", line 899, in start message, payload = await protocol.read() # type: ignore[union-attr] File "/home/msktermi/virtualenv/gold1/3.9/lib64/python3.9/site-packages/aiohttp/streams.py", line 616, in read await self._waiter asyncio.exceptions.CancelledError During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/opt/alt/python39/lib64/python3.9/asyncio/tasks.py", line 490, in wait_for return fut.result() asyncio.exceptions.CancelledError The above exception was the direct cause of the following exception:
已尝试的解决手段:
- 开启所有intents
- 设置
chunk_guild=False - 添加
asyncio.sleep延迟
以上方法仅短暂有效,一段时间后问题依旧,请求技术排查与解决方法。
内容的提问来源于stack exchange,提问作者admin_sj
相关产品推荐
相关产品推荐

