現在、ゲーム制作の真っ最中です。
ここを見つけてください: https://docs.google.com/document/d/1zxC9Mo9LtcMf3jXA3z4xdz7Lj3G3EVGA4_CQzjoeyOA/edit?usp=sharing
新しい誰かが参加したときにメッセージを受け取るようにしようとしています。私の現在の方法は、特定のポートを介してサイトをコンピューターに接続することです。これにより、次の python スクリプトがトリガーされます。
import discord
import asyncio
import websockets
import threading
f = open('runs.txt', 'r')
runs = int(f.readline())
f.close()
def write(input):
f = open( 'runs.txt', 'w' )
f.write( str(input) )
f.close()
username = '<Bot Username>'
password = '<Bot Password>'
client = discord.Client()
client.login(username, password)
chan = discord.PrivateChannel('<Username>', <Channel ID>)
@asyncio.coroutine
def hello(websocket, path):
global runs
input = yield from websocket.recv()
print(input)
if input == 'started':
runs += 1
write(runs)
client.send_message(chan, 'User has played Daedalus')
start_server = websockets.serve(hello, '<My public IP>', <Forwarded Port>)
@client.event
def on_ready():
print('Logged in as')
print(client.user.name)
print(client.user.id)
print('------')
@client.event
def on_message(message):
if message.content.lower().startswith('check'):
client.send_message(message.author, 'There are now '+ str(runs) + ' computers that have played daedalus')
def asyncBegin():
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
disco = threading.Thread(target=client.run)
disco.start()
asy = threading.Thread(target=asyncBegin())
asy.start()
このプログラムは、オンライン アプリの Discord を使用して、私が作成したボットを介してメッセージを送信します。言及されているテキスト ドキュメントは、実行数を保持するためのものです。ゲームでは、正しいポート番号を使用してパブリック IP にすぐに接続するようにプログラムされており、プログラムを実行する必要があります。
localhost では正常に動作することがわかりましたが、Web 経由で接続しようとするとすぐに動作しません。
接続ステータスを見ると、接続を閉じる前に少しだけ接続を試みます。テスト中は、ファイアウォールやネットワーク セキュリティを設定していません。接続が切断される原因は何ですか?