1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Discord上でチェスを遊ぶ

Last updated at Posted at 2021-01-13

はじめに

趣味の領域を出たことがないので、もっときれいに書けるとかありましたら優しく教えて下さい。

やりたいこと

discord.pyとchessのパッケージを使用してDiscord上でchessの対戦ができるようにする

準備

discord developer portalで登録を済ませトークンを取る
discord.pyのインストールpy -3 -m pip install -U discord.py
chessのパッケージインストールpy -m pip install chess

コード

ChessBot.py

import discord
import chess
from discord.ext import commands

token = "token"

bot = commands.Bot(command_prefix="!")
board = None

@bot.event
async def on_ready():
    print("ready")

@bot.command()
async def start(ctx):
    global board
    board = chess.Board()
    await ctx.send("ボードを作成しました")
    await ctx.send("```" + str(board) + "```")

@bot.command()
async def move(ctx,movePos):
    global board
    if board == None:
        await ctx.send("ボードが作成されていません")
        return
    try:
        board.push_san(movePos)
        await ctx.send("```" + str(board) + "```")
    except:
        await ctx.send(movePos + "は有効な値ではありません")
        a = ""
        for i in board.legal_moves:
            a += str(i) + ","
        await ctx.send("> " + a)
    if board.is_game_over():
        await ctx.send("game over")
        board = None

bot.run(token)

結果

1.png

2.png

#つまづいたところ
自分の書いたのは間違っていないのに何やらいっぱいエラーが出てくる(connector.pyやhttp.py)

解決方法

原因はSSL証明書の期限切れらしいから新しい証明書をインストールすればいい

  1. IEを管理者権限で実行
  2. 鍵マークのところを押して証明書を表示
  3. インストール

最後に

有効な値を取得できなかった際にlegal_movesを使い移動できる場所をそのまま表示させていたけれど、不必要なものまで表示されてしまったからforで回して結合していった。あそこの部分は綺麗に書ける気がする。
せっかくctxでユーザ情報を取得できているのでdict利用してユーザごとの勝敗など作ってみたい。

参考

https://discord.com/
https://pypi.org/project/chess/
https://teratail.com/questions/267889

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?