@chtopisatsuda

TypeError: reg() missing 2 required positional arguments: 'loginDb' and 'passwordDb' почему ошибка?

Здраствуйте, ошибка в коде где я добавляю в бд логин и пароль которые вводит сам пользователь потом в фунцкии вызываю метод вывода оценок из дневника и выводит такую ошибку
task(*args, **kwargs)
TypeError: reg() missing 2 required positional arguments: 'loginDb' and 'passwordDb'

Мой код:
from ast import Str
from cgitb import text
from datetime import date
from multiprocessing import AuthenticationError
from turtle import home

from dnevnikru import Dnevnik
from dnevnikru import exceptions as DnevnikError


from pprint import pprint

import sqlite3
import telebot

#sqlite
try:
    sqlite_connection = sqlite3.connect('sqlite_python.db', check_same_thread=False)
    cursor = sqlite_connection.cursor()
    print("База данных создана и успешно подключена к SQLite")

    sqlite_select_query = "select sqlite_version();"
    cursor.execute(sqlite_select_query)
    sqlite_connection.commit()
    record = cursor.fetchall()
    print("Версия базы данных SQLite: ", record)

except sqlite3.Error as error:
    print("Ошибка при подключении к sqlite", error)
finally:
    if (sqlite_connection):
        sqlite_connection.commit()
        print("Соединение с SQLite закрыто")


bot = telebot.TeleBot("5747148691:AAGo59KswgBCWNs3zmUwaTuPF1cPJnEa_6M")
bot.delete_webhook()

@bot.message_handler(commands=['start', 'go'])
def start_handler(message):
    bot.send_message(message.chat.id, "Привет, отправь логин и пароль от дневник.ру")
    bot.register_next_step_handler(message, auth)

def auth(message):
    loginTg, passwordTg = message.text.split()
    cursor.execute('INSERT INTO dn (login, password) VALUES (?, ?)', (loginTg, passwordTg))
    sqlite_connection.commit()

    print(loginTg, passwordTg)
    reg(message, loginTg, passwordTg)
    bot.register_next_step_handler(message, reg)

def reg(message, loginDb, passwordDb):
    sqlite_select_query = """SELECT * from dn"""
    cursor.execute(sqlite_select_query)
    records = cursor.fetchall()
    print("Всего строк:  ", len(records))
    print("Вывод каждой строки")
    for row in records:
        loginDb = row[0]
        passwordDb = row[1]
        print("Логин:", row[0])
        print("Пароль:", row[1])
    d = Dnevnik(login=loginDb, password=passwordDb)
    print(d)
    homeworksF(message, d)

def homeworksF(message, d):
    if message.text == 'Дз':
        pprint(d.marks())

bot.polling(non_stop=True)


Ошибка происходит в функции Reg() связана с двумя переменными loginDb passwordDb не знаю почему, скорее всего из-за того что py не видит просто этих переменных после регистрации. Пришлите готовые решения пожалуйста
  • Вопрос задан
  • 88 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Потому что TeleBot не передаёт параметры loginDb и passwordDb, когда вызывает next step handler.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы