如何通过代理连接discord bot

如何通过代理连接discord bot,discord,aiohttp,Discord,Aiohttp,我正在尝试使用discord.py并通过代理运行discord bot。关于这一主题的研究非常稀少,而且也不是最新的 discordpy doc基本上说使用ProxyConnector,并在创建客户端时将其作为参数传递。 但在aiohttp中,不推荐使用这种方式,而推荐使用client.ClientSession().get。问题是,client.ClientSession().get要求我提供URL 我也尝试过使用ProxyConnector,但当我最终运行bot时它不起作用(无法连接到dis

我正在尝试使用discord.py并通过代理运行discord bot。关于这一主题的研究非常稀少,而且也不是最新的

discordpy doc基本上说使用ProxyConnector,并在创建客户端时将其作为参数传递。 但在aiohttp中,不推荐使用这种方式,而推荐使用client.ClientSession().get。问题是,client.ClientSession().get要求我提供URL

我也尝试过使用ProxyConnector,但当我最终运行bot时它不起作用(无法连接到discord API)。我不确定它到底出了什么问题,因为代理本身可以与任何其他HTTPS服务配合使用


用推荐的方式编码

conn = client.ClientSession().get(proxy='<proxy_url>', proxy_auth=BasicAuth(<proxy_auth>))

self.client = discord.Client(connector=conn)
conn=client.ClientSession().get(proxy='',proxy\u auth=BasicAuth())
self.client=discord.client(连接器=conn)

使用不推荐的方式编写代码

conn = ProxyConnector(proxy='<proxy_url>', proxy_auth=BasicAuth(<proxy_auth>))

self.client = discord.Client(connector=conn)
conn=ProxyConnector(proxy='',proxy\u auth=BasicAuth())
self.client=discord.client(连接器=conn)
回溯

Traceback (most recent call last):
  File "C:/Users/airiau/PycharmProjects/pronostics/main.py", line 50, in <module>
    main()
  File "C:/Users/airiau/PycharmProjects/pronostics/main.py", line 46, in main
    bot.run(config['token'])
  File "C:\Users\airiau\PycharmProjects\pronostics\sample\DiscordBot.py", line 352, in run
    self.client.run(self.token)
  File "C:\Users\airiau\venv-3.6\lib\site-packages\discord\client.py", line 519, in run
    self.loop.run_until_complete(self.start(*args, **kwargs))
  File "C:\Program Files (x86)\Python36-32\lib\asyncio\base_events.py", line 468, in run_until_complete
    return future.result()
  File "C:\Users\airiau\venv-3.6\lib\site-packages\discord\client.py", line 491, in start
    yield from self.connect()
  File "C:\Users\airiau\venv-3.6\lib\site-packages\discord\client.py", line 444, in connect
    self.ws = yield from DiscordWebSocket.from_client(self)
  File "C:\Users\airiau\venv-3.6\lib\site-packages\discord\gateway.py", line 207, in from_client
    timeout=60, loop=client.loop)
  File "C:\Program Files (x86)\Python36-32\lib\asyncio\tasks.py", line 358, in wait_for
    return fut.result()
  File "C:\Users\airiau\venv-3.6\lib\site-packages\discord\gateway.py", line 65, in _ensure_coroutine_connect
    ws = yield from websockets.connect(gateway, loop=loop, klass=klass)
  File "C:\Users\airiau\venv-3.6\lib\site-packages\websockets\py35\client.py", line 19, in __await__
    return (yield from self.client)
  File "C:\Users\airiau\venv-3.6\lib\site-packages\websockets\client.py", line 210, in connect
    factory, wsuri.host, wsuri.port, **kwds)
  File "C:\Program Files (x86)\Python36-32\lib\asyncio\base_events.py", line 787, in create_connection
    ', '.join(str(exc) for exc in exceptions)))
OSError: Multiple exceptions: [Errno 10060] Connect call failed ('104.16.59.37', 443), [Errno 10060] Connect call failed ('104.16.60.37', 443)
回溯(最近一次呼叫最后一次):
文件“C:/Users/airiau/PycharmProjects/pronostics/main.py”,第50行,in
main()
文件“C:/Users/airiau/PycharmProjects/pronostics/main.py”,第46行,main
运行(配置['token'])
文件“C:\Users\airiau\PycharmProjects\pronostics\sample\DiscordBot.py”,第352行,正在运行
self.client.run(self.token)
文件“C:\Users\airiau\venv-3.6\lib\site packages\discord\client.py”,第519行,正在运行
self.loop.run_直到_完成(self.start(*args,**kwargs))
文件“C:\Program Files(x86)\Python36-32\lib\asyncio\base\u events.py”,第468行,在运行\u直到完成
返回future.result()
文件“C:\Users\airiau\venv-3.6\lib\site packages\discord\client.py”,第491行,开始
从self.connect()获得收益
文件“C:\Users\airiau\venv-3.6\lib\site packages\discord\client.py”,第444行,在connect中
self.ws=来自客户机(self)的DiscordWebSocket.的收益
文件“C:\Users\airiau\venv-3.6\lib\site packages\discord\gateway.py”,第207行,来自\u客户端
超时=60,循环=client.loop)
文件“C:\Program Files(x86)\Python36-32\lib\asyncio\tasks.py”,第358行,正在等待\u
返回未来结果()
文件“C:\Users\airiau\venv-3.6\lib\site packages\discord\gateway.py”,第65行,在“确保”和“协同程序”连接中
ws=来自websockets.connect的收益(网关,循环=循环,klass=klass)
文件“C:\Users\airiau\venv-3.6\lib\site packages\websockets\py35\client.py”,第19行,在__
收益(自客户获得的收益)
文件“C:\Users\airiau\venv-3.6\lib\site packages\websockets\client.py”,第210行,在connect中
工厂,wsuri.host,wsuri.port,**kwds)
文件“C:\Program Files(x86)\Python36-32\lib\asyncio\base\u events.py”,第787行,位于创建\u连接中
“,”.join(异常中exc的str(exc)))
OSError:多个异常:[Errno 10060]连接调用失败('104.16.59.37',443),[Errno 10060]连接调用失败('104.16.60.37',443)

通过不断的研究,我发现以下答案:

discord.py使用的WebSocket似乎不支持HTTP 代理。这将神奇地与HTTPS一起工作,但由于 代理是HTTP,而不是。这意味着,除了重写 discord.py,支持HTTP代理(例如,通过使用websocket客户端) 例如,它支持HTTP代理),我们可能运气不好

看起来不可能完全做到这一点