【问题标题】:can't figure out the issue with counter in sqlite无法解决 sqlite 中计数器的问题
【发布时间】:2021-01-02 23:44:00
【问题描述】:

所以这样做是,如果我在数据库中添加一个单词,它应该在每次输入时为相应单词的计数 +1

我可以将单词添加到数据库中,但计数系统不起作用

@commands.command()
    async def wordadd(self, ctx, *args: str):
        message = " ".join(args).lower()
        word = db.column("SELECT word FROM words")
        if message not in word:
            db.execute("INSERT OR IGNORE INTO words (word) VALUES (?)",message)
            db.commit()
            await ctx.send("word has been added")
        else:
            await ctx.send("word already in there")


    async def on_message(self, message):
        word = db.column("SELECT word FROM words")

        if message in word:
            db.execute("UPDATE words SET count = count + 1 WHERE word = ?", message)
            db.commit()

如何修复计数系统?

【问题讨论】:

  • message = " ".join(args).lower() 可能没有按照您的意愿行事。您可以使用print(" ".join("test").lower()) 进行测试,这将打印t e s t

标签: python database sqlite discord.py discord.py-rewrite


【解决方案1】:

试试这个

import discord
import sqlite3

from discord.ext import commands

client = commands.Bot(command_prefix='.')

@client.event
async def on_ready():
    print("Ready")

async def get_messages():
    c.execute("SELECT * FROM messages")
    return c.fetchall()

async def add_message(message):
    with conn:
        c.execute("UPDATE message SET messages=:message",
            {'messages': message})

async def remove_message(message):
    with conn:
        c.execute("DELETE message=:message FROM message",
            {'message': message})

async def add_user_message(user_id, message):
    with conn:
        c.execute("UPDATE message SET messages=:message + messages WHERE user_id=:user_id",
            {'message': message, 'user_id': user_id})

@client.command()
async def add_message(ctx, *, message: str):
    check = get_messages()
    if check:
        await ctx.send("That word is already on the database!")
        return
    else:
        msg = message.lower()
        await add_message(msg)
        await ctx.send("Succesfully added {}".format(message))
        return

@client.event
async def on_message(message):
    check = await get_messages()
    if message.content.lower() in check:
        await add_user_message(message.author.id, 1)
    else:
        pass

if __name__ == '__main__':
    client.run("token")

【讨论】:

    猜你喜欢
    • 2019-05-23
    • 2021-01-07
    • 2017-07-05
    • 1970-01-01
    • 2018-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-28
    相关资源
    最近更新 更多