今天來寫一個很簡單的機器人,加減乘除計算機
這個版本會用很慢且局限性很大但很好懂的方式來寫
程式碼
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')
他只能輸入兩個數字,像底下範例這樣就不行,且加減乘除都要單獨寫判斷式非常的麻煩且攏長
這隻程式是用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')
執行結果