This commit is contained in:
		
							parent
							
								
									fe81d2b865
								
							
						
					
					
						commit
						f06f7a46bc
					
				
					 2 changed files with 40 additions and 34 deletions
				
			
		| 
						 | 
				
			
			@ -6,24 +6,32 @@
 | 
			
		|||
 * 切断されてしまうので、別々のプロセスで行うようにします
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
import * as request from 'request-promise-native';
 | 
			
		||||
import Othello, { Color } from '../core';
 | 
			
		||||
import conf from '../../../conf';
 | 
			
		||||
 | 
			
		||||
let game;
 | 
			
		||||
let form;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * このBotのユーザーID
 | 
			
		||||
 * BotアカウントのユーザーID
 | 
			
		||||
 */
 | 
			
		||||
let id;
 | 
			
		||||
const id = conf.othello_ai.id;
 | 
			
		||||
 | 
			
		||||
process.on('message', msg => {
 | 
			
		||||
/**
 | 
			
		||||
 * BotアカウントのAPIキー
 | 
			
		||||
 */
 | 
			
		||||
const i = conf.othello_ai.i;
 | 
			
		||||
 | 
			
		||||
let post;
 | 
			
		||||
 | 
			
		||||
process.on('message', async msg => {
 | 
			
		||||
	console.log(msg);
 | 
			
		||||
 | 
			
		||||
	// 親プロセスからデータをもらう
 | 
			
		||||
	if (msg.type == '_init_') {
 | 
			
		||||
		game = msg.game;
 | 
			
		||||
		form = msg.form;
 | 
			
		||||
		id = msg.id;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// フォームが更新されたとき
 | 
			
		||||
| 
						 | 
				
			
			@ -37,16 +45,18 @@ process.on('message', msg => {
 | 
			
		|||
 | 
			
		||||
		//#region TLに投稿する
 | 
			
		||||
		const game = msg.body;
 | 
			
		||||
		const url = `https://misskey.xyz/othello/${game.id}`;
 | 
			
		||||
		const url = `https://${conf.host}/othello/${game.id}`;
 | 
			
		||||
		const user = game.user1_id == id ? game.user2 : game.user1;
 | 
			
		||||
		const isSettai = form[0].value === 0;
 | 
			
		||||
		const text = isSettai
 | 
			
		||||
			? `?[${user.name}](https://misskey.xyz/${user.username})さんの接待を始めました!`
 | 
			
		||||
			: `対局を?[${user.name}](https://misskey.xyz/${user.username})さんと始めました! (強さ${form[0].value})`;
 | 
			
		||||
		process.send({
 | 
			
		||||
			type: 'tl',
 | 
			
		||||
			text: `${text}\n→[観戦する](${url})`
 | 
			
		||||
			? `?[${user.name}](https://${conf.host}/${user.username})さんの接待を始めました!`
 | 
			
		||||
			: `対局を?[${user.name}](https://${conf.host}/${user.username})さんと始めました! (強さ${form[0].value})`;
 | 
			
		||||
		const res = await request.post(`https://api.${conf.host}/posts/create`, {
 | 
			
		||||
			json: { i,
 | 
			
		||||
				text: `${text}\n→[観戦する](${url})`
 | 
			
		||||
			}
 | 
			
		||||
		});
 | 
			
		||||
		post = res.created_post;
 | 
			
		||||
		//#endregion
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -58,23 +68,24 @@ process.on('message', msg => {
 | 
			
		|||
		});
 | 
			
		||||
 | 
			
		||||
		//#region TLに投稿する
 | 
			
		||||
		const url = `https://misskey.xyz/othello/${msg.body.game.id}`;
 | 
			
		||||
		const user = game.user1_id == id ? game.user2 : game.user1;
 | 
			
		||||
		const isSettai = form[0].value === 0;
 | 
			
		||||
		const text = isSettai
 | 
			
		||||
			? msg.body.winner_id === null
 | 
			
		||||
				? `?[${user.name}](https://misskey.xyz/${user.username})さんに接待で引き分けました...`
 | 
			
		||||
				? `?[${user.name}](https://${conf.host}/${user.username})さんに接待で引き分けました...`
 | 
			
		||||
				: msg.body.winner_id == id
 | 
			
		||||
					? `?[${user.name}](https://misskey.xyz/${user.username})さんに接待で勝ってしまいました...`
 | 
			
		||||
					: `?[${user.name}](https://misskey.xyz/${user.username})さんに接待で負けてあげました♪`
 | 
			
		||||
					? `?[${user.name}](https://${conf.host}/${user.username})さんに接待で勝ってしまいました...`
 | 
			
		||||
					: `?[${user.name}](https://${conf.host}/${user.username})さんに接待で負けてあげました♪`
 | 
			
		||||
			: msg.body.winner_id === null
 | 
			
		||||
				? `?[${user.name}](https://misskey.xyz/${user.username})さんと引き分けました~ (強さ${form[0].value})`
 | 
			
		||||
				? `?[${user.name}](https://${conf.host}/${user.username})さんと引き分けました~ (強さ${form[0].value})`
 | 
			
		||||
				: msg.body.winner_id == id
 | 
			
		||||
					? `?[${user.name}](https://misskey.xyz/${user.username})さんに勝ちました♪ (強さ${form[0].value})`
 | 
			
		||||
					: `?[${user.name}](https://misskey.xyz/${user.username})さんに負けました... (強さ${form[0].value})`;
 | 
			
		||||
		process.send({
 | 
			
		||||
			type: 'tl',
 | 
			
		||||
			text: `${text}\n→[結果を見る](${url})`
 | 
			
		||||
					? `?[${user.name}](https://${conf.host}/${user.username})さんに勝ちました♪ (強さ${form[0].value})`
 | 
			
		||||
					: `?[${user.name}](https://${conf.host}/${user.username})さんに負けました... (強さ${form[0].value})`;
 | 
			
		||||
		request.post(`https://api.${conf.host}/posts/create`, {
 | 
			
		||||
			json: { i,
 | 
			
		||||
				reply_id: post.id,
 | 
			
		||||
				text: text
 | 
			
		||||
			}
 | 
			
		||||
		});
 | 
			
		||||
		//#endregion
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -29,7 +29,7 @@ const id = conf.othello_ai.id;
 | 
			
		|||
/**
 | 
			
		||||
 * ホームストリーム
 | 
			
		||||
 */
 | 
			
		||||
const homeStream = new ReconnectingWebSocket(`wss://api.misskey.xyz/?i=${i}`, undefined, {
 | 
			
		||||
const homeStream = new ReconnectingWebSocket(`wss://api.${conf.host}/?i=${i}`, undefined, {
 | 
			
		||||
	constructor: WebSocket
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -48,6 +48,8 @@ homeStream.on('message', message => {
 | 
			
		|||
	if (msg.type == 'mention' || msg.type == 'reply') {
 | 
			
		||||
		const post = msg.body;
 | 
			
		||||
 | 
			
		||||
		if (post.user_id == id) return;
 | 
			
		||||
 | 
			
		||||
		// リアクションする
 | 
			
		||||
		request.post('https://api.misskey.xyz/posts/reactions/create', {
 | 
			
		||||
			json: { i,
 | 
			
		||||
| 
						 | 
				
			
			@ -75,7 +77,7 @@ homeStream.on('message', message => {
 | 
			
		|||
		const message = msg.body;
 | 
			
		||||
		if (message.text) {
 | 
			
		||||
			if (message.text.indexOf('オセロ') > -1) {
 | 
			
		||||
				request.post('https://api.misskey.xyz/messaging/messages/create', {
 | 
			
		||||
				request.post(`https://api.${conf.host}/messaging/messages/create`, {
 | 
			
		||||
					json: { i,
 | 
			
		||||
						user_id: message.user_id,
 | 
			
		||||
						text: '良いですよ~'
 | 
			
		||||
| 
						 | 
				
			
			@ -90,7 +92,7 @@ homeStream.on('message', message => {
 | 
			
		|||
 | 
			
		||||
// ユーザーを対局に誘う
 | 
			
		||||
function invite(userId) {
 | 
			
		||||
	request.post('https://api.misskey.xyz/othello/match', {
 | 
			
		||||
	request.post(`https://api.${conf.host}/othello/match`, {
 | 
			
		||||
		json: { i,
 | 
			
		||||
			user_id: userId
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			@ -100,7 +102,7 @@ function invite(userId) {
 | 
			
		|||
/**
 | 
			
		||||
 * オセロストリーム
 | 
			
		||||
 */
 | 
			
		||||
const othelloStream = new ReconnectingWebSocket(`wss://api.misskey.xyz/othello?i=${i}`, undefined, {
 | 
			
		||||
const othelloStream = new ReconnectingWebSocket(`wss://api.${conf.host}/othello?i=${i}`, undefined, {
 | 
			
		||||
	constructor: WebSocket
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -132,7 +134,7 @@ othelloStream.on('message', message => {
 | 
			
		|||
 */
 | 
			
		||||
function gameStart(game) {
 | 
			
		||||
	// ゲームストリームに接続
 | 
			
		||||
	const gw = new ReconnectingWebSocket(`wss://api.misskey.xyz/othello-game?i=${i}&game=${game.id}`, undefined, {
 | 
			
		||||
	const gw = new ReconnectingWebSocket(`wss://api.${conf.host}/othello-game?i=${i}&game=${game.id}`, undefined, {
 | 
			
		||||
		constructor: WebSocket
 | 
			
		||||
	});
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -170,8 +172,7 @@ function gameStart(game) {
 | 
			
		|||
		ai.send({
 | 
			
		||||
			type: '_init_',
 | 
			
		||||
			game,
 | 
			
		||||
			form,
 | 
			
		||||
			id
 | 
			
		||||
			form
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
		ai.on('message', msg => {
 | 
			
		||||
| 
						 | 
				
			
			@ -180,12 +181,6 @@ function gameStart(game) {
 | 
			
		|||
					type: 'set',
 | 
			
		||||
					pos: msg.pos
 | 
			
		||||
				}));
 | 
			
		||||
			} else if (msg.type == 'tl') {
 | 
			
		||||
				request.post('https://api.misskey.xyz/posts/create', {
 | 
			
		||||
					json: { i,
 | 
			
		||||
						text: msg.text
 | 
			
		||||
					}
 | 
			
		||||
				});
 | 
			
		||||
			} else if (msg.type == 'close') {
 | 
			
		||||
				gw.close();
 | 
			
		||||
			}
 | 
			
		||||
| 
						 | 
				
			
			@ -227,7 +222,7 @@ async function onInviteMe(inviter) {
 | 
			
		|||
	console.log(`Someone invited me: @${inviter.username}`);
 | 
			
		||||
 | 
			
		||||
	// 承認
 | 
			
		||||
	const game = await request.post('https://api.misskey.xyz/othello/match', {
 | 
			
		||||
	const game = await request.post(`https://api.${conf.host}/othello/match`, {
 | 
			
		||||
		json: {
 | 
			
		||||
			i,
 | 
			
		||||
			user_id: inviter.id
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue