PythonBot与MySQL数据库问题不协调

ryoqjall  于 2022-10-03  发布在  Python
关注(0)|答案(1)|浏览(182)

我对Python和通用编码是新手,所以我为我的问题道歉。

机器人做什么

  • 你向机器人发送“货物”的信息
  • Bot响应并询问添加了什么货物
  • 我回复了类似“甜瓜”的东西,它被添加到数据库中
  • 机器人然后询问要添加到数据库的数量
  • 机器人随后将检查项目是否已在数据库中

我的问题我可以输入供货名称和金额。然而,它们在数据库中不会出现在彼此的旁边。我希望机器人对每个问题都获得一个值。

  • 供应量和金额在数据库中不是紧挨着的
  • 如何检查项目是否已在数据库中以防止重复
  • 我将‘@’作为IF语句的原因是,我也不确定如何创建带有不一致的对话流,以生成输入并将其用作数据库条目

《守则》

def handle_response(message) -> str or float or int:
    p_message = message.lower()
    if p_message == 'cargo':
        return 'What cargo is being added onboard'
    if '@' in p_message:
        sql = """INSERT INTO cargo (supplies) VALUES (%s)"""
        val = message.lower()
        cursor.execute(sql, (val,))
        conn.commit()
        return 'How many of them are being added?'
    if p_message != str:
        sql = """INSERT INTO cargo (amount) VALUES (%s)"""
        val = message.lower()
        cursor.execute(sql, (val,))
        conn.commit()
        return 'Honk Honk!! Supplies onboard!!'

    else:
        return 'something is not right'

使用中的僵尸和数据库镜像enter image description here

zbwhf8kr

zbwhf8kr1#

我喜欢使用TinyDB和不和谐的机器人,超级容易使用。下面的代码是一个全功能的不和谐机器人,它将在数据库中存储货物,如果货物已经存在于数据库中,它将添加新的值。

import discord
from discord.ext import commands
from discord import default_permissions
import asyncio
from tinydb import TinyDB, Query
from tinydb.operations import increment

q = Query()
db = TinyDB('./databases/cargo.json')

intents = discord.Intents.default()
bot = discord.Bot(intents=intents, members = True, guilds = True, messages = True, guild_messages = True, message_content = True)

@bot.slash_command(name = "addcargo", description = "adds cargo")
async def addcargo(ctx, cargo, amount):

    cargo = cargo
    amount = amount
    result = db.search(q.Cargo == cargo)

    if result == []:
        db.insert({'Cargo': cargo, 'Amount': amount})
    else:  
        quantity = (result[0]['Amount'])
        sum = int(quantity)+int(amount)
        db.update({'Amount': str(sum)}, q.Cargo == cargo)

bot.run(TOKEN)

这是我用最新版本的pycord创建的,它使用了斜杠命令/addCargo

数据库将如下所示:

{"_default": {"1": {"Cargo": "dogs", "Amount": "11"}, "2": {"Cargo": "pears", "Amount": "3"}}}

相关问题