초보자가 주사위를 흔드는 Discord Bot을 만들었습니다.

첫 투고입니다.
Python 초보자 끊임없는 점 등 많이 있다고 생각합니다만, 부담없이 읽어 주시면 다행입니다.
조언 등을 해 주시면 매우 기쁩니다.

2019/09/09 받은 메시지의 주사위 면수와 개수를 변수에 전달하는 곳과 주사위의 눈의 합을 계산하는 부분을 개선했습니다. 멋진 조언 감사합니다!

이번에 만드는 것의 목표



Discord에서 !dice AdB (A는 얼마 안되는 개수, B는 얼마 안되는 면수, AB 모두 1 이상)를 입력하면 주사위를 흔든 결과를 표시하는 Bot을 만든다.

환경


  • Windows10
  • discord.py 1.2.3
  • Python 3.7.3

  • 사전 준비



    bot 준비

    Python으로 간단한 Discord Bot을 만드는 방법
    htps : // 코 m / 피나 p 푼 r / ms / 아 f4 cd b04727437477f
    Discord Bot 가장 빠른 튜토리얼【Python&Heroku&GitHub】
    htps : // 이 m / 1은 g 등 9 / ms / 아 4b373 8895273875 8

    이 기사는 매우 이해하기 쉽습니다.

    bot 만들기



    main.py
    import discord
    import sys
    
    # さいころの和を計算する用の関数
    from func import  diceroll
    
    TOKEN = '任意のトークン'
    
    client = discord.Client()
    
    @client.event
    async def on_ready():
        print('--------------')
        print('ログインしました')
        print(client.user.name)
        print(client.user.id)
        print('--------------')
        channel = client.get_channel('チャンネルID')
        await channel.send('楽しいTRPGを始めましょう!')
    
    @client.event
    async def on_message(message):
        if message.author.bot:
            return
        if message.content.startswith("!dice"):
            # 入力された内容を受け取る
            say = message.content 
    
            # [!dice ]部分を消し、AdBのdで区切ってリスト化する
            order = say.strip('!dice ')
            cnt, mx = list(map(int, order.split('d'))) # さいころの個数と面数
            dice = diceroll(cnt, mx) # 和を計算する関数(後述)
            await message.channel.send(dice[cnt])
            del dice[cnt]
    
            # さいころの目の総和の内訳を表示する
            await message.channel.send(dice)
    
    client.run(TOKEN)
    

    다음으로 합을 계산하는 함수의 내용입니다.

    func.py
    import random
    
    def diceroll(cnt, max):
        total = 0
        num_list = []
        for i in range(0, cnt):
            # ランダムに1からサイコロの面数までの和を取得しリストに入れる
            num = random.randint(1, max)
            num_list.append(num)
        # さいころの目の総和を計算しリストに入れる
        total = sum(num_list)
        num_list.append(total)
        return num_list
    

    결과



    제대로 총화, 내역 모두 표시했습니다.


    덧붙여서 100d100 정도 크더라도 표시해줍니다. (그런 일은 하지 않을 것입니다만)


    결론



    처음으로 Discord의 Bot을 만들어 보았습니다만, 생각보다 부담없이 만들 수 있어 즐거웠습니다.
    주사위의 합계의 계산이거나, 명령을 받는 방법이거나 여러가지 불모호한 장소가 있으므로, 앞으로보다 Python을 정진해 개량해 나가면 된다고 생각합니다.
    그 밖에도 다양한 Bot 만들고 싶다.

    참고



    사전 준비에서 언급 한 훌륭한 기사 및 그 샘플 코드

    Python으로 간단한 Discord Bot을 만드는 방법
    htps : // 코 m / 피나 p 푼 r / ms / 아 f4 cd b04727437477f
    Discord Bot 가장 빠른 튜토리얼【Python&Heroku&GitHub】
    htps : // 이 m / 1은 g 등 9 / ms / 아 4b373 8895273875 8

    좋은 웹페이지 즐겨찾기