iT邦幫忙

2023 iThome 鐵人賽

DAY 17
0

今天來寫一個很簡單的機器人,加減乘除計算機

1.智障版

這個版本會用很慢且局限性很大但很好懂的方式來寫

程式碼

from discord.ext import commands 
import discord

intents = discord.Intents.all()

bot = commands.Bot(command_prefix='!', intents=intents)

@bot.command()
async def calculate(ctx, *args):
#判斷輸入是否符合格式
    if len(args) < 3:
        await ctx.send("Please provide at least two numbers and an operator.")
        return

    try:
        num1 = float(args[0])
        operator = args[1]
        num2 = float(args[2])
    except ValueError:
        await ctx.send("Invalid input. Please provide valid numbers.")
        return

    result = None

#加減乘除判斷式
    if operator == '+':
        result = num1 + num2
    elif operator == '-':
        result = num1 - num2
    elif operator == '*':
        result = num1 * num2
    elif operator == '/':
        if num2 == 0:
            await ctx.send("Cannot divide by zero.")
            return
        result = num1 / num2
    else:
        await ctx.send("Invalid operator. Please use +, -, *, or /.")
        return

    await ctx.send(f'Result: {result}')

bot.run('token')

他只能輸入兩個數字,像底下範例這樣就不行,且加減乘除都要單獨寫判斷式非常的麻煩且攏長

https://ithelp.ithome.com.tw/upload/images/20230930/20161116dJLq55xtMr.png

2.快速版本

這隻程式是用expression 允許使用者輸入一個數學表達式,然後使用 Python 的 eval() 函數來計算這個表達式的結果。eval() 函數是 Python 的內置函數,用於執行字符串中的表達式,並返回結果。

程式碼

from discord.ext import commands
import discord

intents = discord.Intents.all()

bot = commands.Bot(command_prefix='!', intents=intents)

@bot.command()
async def calculate(ctx, *, expression):
    try:
        result = eval(expression)
        await ctx.send(f'Result: {result}')
    except Exception as e:
        await ctx.send(f'Error: {str(e)}')

bot.run('token')

執行結果

https://ithelp.ithome.com.tw/upload/images/20230930/20161116MRNDqeVIxl.png


上一篇
[Day16] 有趣的機器人程式碼
下一篇
[Day18] discord.py slash_command問題與討論(上)
系列文
使用discord.py開發自己的機器人30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言