summaryrefslogtreecommitdiff
path: root/ATRI/plugins/plugin_utils/roll.py
blob: bf87aa3fcb06535a138242800538dfe72a620ae1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#!/usr/bin/env python3
# -*- encoding: utf-8 -*-
'''
@File    :   roll.py
@Time    :   2020/11/07 15:56:02
@Author  :   Kyomotoi
@Contact :   [email protected]
@Github  :   https://github.com/Kyomotoi
@License :   Copyright © 2018-2020 Kyomotoi, All Rights Reserved.
'''
__author__ = 'kyomotoi'

import re
from random import randint


def roll_dice(par: str) -> str:
    """掷骰子"""
    result = 0
    proc = ''
    proc_list = []
    p = par.split('+')

    # 计算每个单独的roll
    for i in p:
        args = re.findall(r"(\d{0,10})(?:(d)(\d{1,10}))", i)
        args = list(args[0])

        if not args[0]:
            args[0] = 1

        if int(args[0]) >= 5000 or int(args[2]) >= 5000:
            return '阿..好大...'

        for a in range(1, int(args[0]) + 1):
            rd = randint(1, int(args[2]))
            result = result + rd

            if len(proc_list) <= 10:
                proc_list.append(rd)

    if len(proc_list) == 10:
        temp_list = []
        for i in proc_list:
            if len(temp_list) == 9:
                proc += str(i)
            else:
                proc += str(i) + '+'
                temp_list.append(i)

    elif len(proc_list) >= 10:
        proc += '太长了不展示了'
    
    else:
        proc += str(result)

    result = f"{par}=({proc})={result}"

    return str(result)