Пишу бота для telegram на python с помощью библиотеки telebot.
Использую sqlite3 в качестве db. Возникла ошибка в 66 строчке (def perevod -> if balance)
import telebot
from telebot import types
import sqlite3
bot = telebot.TeleBot('secret_key_for_tg_bot')
bot.enable_save_next_step_handlers(delay=0)
db = sqlite3.connect('users.db', check_same_thread=False)
sql = db.cursor()
sql.execute("""CREATE TABLE IF NOT EXISTS users(
chatid TEXT,
username TEXT,
balance INT
)""") # создаем таблицу users с полями chatid, username, balance
db.commit() # сохраняем базу данных
glav = types.KeyboardButton("↪ Главная")
mm = types.ReplyKeyboardMarkup(row_width=2, resize_keyboard=True)
button1 = types.KeyboardButton(" Информация")
button2 = types.KeyboardButton(" Операции")
mm.add(button1, button2)
deystv = types.ReplyKeyboardMarkup(row_width=2, resize_keyboard=True)
button3 = types.KeyboardButton(" Пополнение")
button4 = types.KeyboardButton(" Переводы")
deystv.add(button3, button4, glav)
popoln = types.ReplyKeyboardMarkup(row_width=2, resize_keyboard=True)
button5 = types.KeyboardButton(" Пополнение")
button6 = types.KeyboardButton(" Переводы")
popoln.add(button5, button6, glav)
perev = types.ReplyKeyboardMarkup(row_width=2, resize_keyboard=True)
button7 = types.KeyboardButton(" По DRZ-ID")
button8 = types.KeyboardButton(" На карту банка")
perev.add(button7, button8, glav)
# otvet = types.InlineKeyboardMarkup(row_width=2)
# button1 = types.InlineKeyboardButton(" Хорошо", callback_data='good')
# button2 = types.InlineKeyboardButton(" Плохо", callback_data='bad')
# otvet.add(button1,button2)
@bot.message_handler(commands=['start'])
def start(message):
bot.send_message(message.chat.id, "DRZ BANK - Telegram", reply_markup=mm)
sql.execute(f"SELECT chatid FROM users WHERE chatid = '{message.chat.id}'")
if sql.fetchone() is None:
sql.execute(f"INSERT INTO users VALUES(?,?,?)", (message.chat.id, message.from_user.username, 0))
db.commit()
@bot.message_handler(content_types=['text'])
def backk(message):
handler(message)
def perevod(message):
balance = sql.execute(f"SELECT balance FROM users WHERE chatid = {message.chat.id}")
def summa (message: int) -> int:
msg = bot.send_message(message.chat.id, 'Введите сумму перевода:')
bot.register_next_step_handler(msg, perevod)
if balance >= summa(message) :
def drzid (message: int) -> int:
msg = bot.send_message(message.chat.id, 'Введите ID Получателя:')
bot.register_next_step_handler(msg, perevod)
sql.execute(f"UPDATE users SET balance = balance - drzsumper() WHERE chatid = {message.chat.id}")
sql.execute(f"UPDATE users SET balance = balance + drzsumper() WHERE chatid = secas2(message)")
bot.send_message(message.chat.id, "Перевод выполнен успешно!", reply_markup=mm)
db.commit()
else:
bot.send_message(message.chat.id, "Недостаточно средств!", reply_markup=mm)
def handler(message):
if message.text == " Информация":
for value in sql.execute(f"SELECT balance FROM users WHERE chatid = {message.chat.id}"):
bot.send_message(message.chat.id, f"Ваш баланс: {value[0]} DC",
parse_mode='html', reply_markup=mm)
for value in sql.execute(f"SELECT chatid FROM users WHERE chatid = {message.chat.id}"):
bot.send_message(message.chat.id, f"Ваш DRZ-ID: {value[0]}",
parse_mode='html', reply_markup=mm)
if message.text == "↪ Главная":
bot.send_message(message.chat.id, "DRZ BANK - Telegram", reply_markup=mm)
if message.text == " Операции":
bot.send_message(message.chat.id, "Доступные операции:", reply_markup=deystv)
if message.text == " Переводы":
bot.send_message(message.chat.id, "Доступные варианты:", reply_markup=perev)
if message.text == " По DRZ-ID":
perevod(message)
if message.text == "xq2321dakh2311ndad92":
sql.execute(f"UPDATE users SET balance = balance + 100 WHERE chatid = {message.chat.id}")
db.commit()
for value in sql.execute(f"SELECT balance FROM users WHERE chatid = {message.chat.id}"):
bot.send_message(message.chat.id, f"Хорошо, я выдал тебе 100 рублей на баланс.\n\nТвой баланс: {value[0]}",
parse_mode='html')
bot.polling(none_stop=True)
import telebot
from telebot import types
import sqlite3
bot = telebot.TeleBot('6408261977:AAGg8wMLYi_FF18CYKRqf0wKd5YKXA1GqFo')
bot.enable_save_next_step_handlers(delay=0)
db = sqlite3.connect('users.db', check_same_thread=False)
sql = db.cursor()
sql.execute("""CREATE TABLE IF NOT EXISTS users(
chatid TEXT,
username TEXT,
balance INT
)""") # создаем таблицу users с полями chatid, username, balance
db.commit() # сохраняем базу данных
glav = types.KeyboardButton("↪ Главная")
mm = types.ReplyKeyboardMarkup(row_width=2, resize_keyboard=True)
button1 = types.KeyboardButton(" Информация")
button2 = types.KeyboardButton(" Операции")
mm.add(button1, button2)
deystv = types.ReplyKeyboardMarkup(row_width=2, resize_keyboard=True)
button3 = types.KeyboardButton(" Пополнение")
button4 = types.KeyboardButton(" Переводы")
deystv.add(button3, button4, glav)
popoln = types.ReplyKeyboardMarkup(row_width=2, resize_keyboard=True)
button5 = types.KeyboardButton(" Пополнение")
button6 = types.KeyboardButton(" Переводы")
popoln.add(button5, button6, glav)
perev = types.ReplyKeyboardMarkup(row_width=2, resize_keyboard=True)
button7 = types.KeyboardButton(" По DRZ-ID")
button8 = types.KeyboardButton(" На карту банка")
perev.add(button7, button8, glav)
# otvet = types.InlineKeyboardMarkup(row_width=2)
# button1 = types.InlineKeyboardButton(" Хорошо", callback_data='good')
# button2 = types.InlineKeyboardButton(" Плохо", callback_data='bad')
# otvet.add(button1,button2)
@bot.message_handler(commands=['start'])
def start(message):
bot.send_message(message.chat.id, "DRZ BANK - Telegram", reply_markup=mm)
sql.execute(f"SELECT chatid FROM users WHERE chatid = '{message.chat.id}'")
if sql.fetchone() is None:
sql.execute(f"INSERT INTO users VALUES(?,?,?)", (message.chat.id, message.from_user.username, 0))
db.commit()
@bot.message_handler(content_types=['text'])
def backk(message):
handler(message)
def perevod(message):
balance = sql.execute(f"SELECT balance FROM users WHERE chatid = {message.chat.id}")
def summa (message: int) -> int:
msg = bot.send_message(message.chat.id, 'Введите сумму перевода:')
bot.register_next_step_handler(msg, perevod)
if balance(int) >= summa(message) :
def drzid (message: int) -> int:
msg = bot.send_message(message.chat.id, 'Введите ID Получателя:')
bot.register_next_step_handler(msg, perevod)
sql.execute(f"UPDATE users SET balance = balance - drzsumper() WHERE chatid = {message.chat.id}")
sql.execute(f"UPDATE users SET balance = balance + drzsumper() WHERE chatid = secas2(message)")
bot.send_message(message.chat.id, "Перевод выполнен успешно!", reply_markup=mm)
db.commit()
else:
bot.send_message(message.chat.id, "Недостаточно средств!", reply_markup=mm)
def handler(message):
if message.text == " Информация":
for value in sql.execute(f"SELECT balance FROM users WHERE chatid = {message.chat.id}"):
bot.send_message(message.chat.id, f"Ваш баланс: {value[0]} DC",
parse_mode='html', reply_markup=mm)
for value in sql.execute(f"SELECT chatid FROM users WHERE chatid = {message.chat.id}"):
bot.send_message(message.chat.id, f"Ваш DRZ-ID: {value[0]}",
parse_mode='html', reply_markup=mm)
if message.text == "↪ Главная":
bot.send_message(message.chat.id, "DRZ BANK - Telegram", reply_markup=mm)
if message.text == " Операции":
bot.send_message(message.chat.id, "Доступные операции:", reply_markup=deystv)
if message.text == " Переводы":
bot.send_message(message.chat.id, "Доступные варианты:", reply_markup=perev)
if message.text == " По DRZ-ID":
perevod(message)
if message.text == "xq2321dakh2311ndad92":
sql.execute(f"UPDATE users SET balance = balance + 100 WHERE chatid = {message.chat.id}")
db.commit()
for value in sql.execute(f"SELECT balance FROM users WHERE chatid = {message.chat.id}"):
bot.send_message(message.chat.id, f"Хорошо, я выдал тебе 100 рублей на баланс.\n\nТвой баланс: {value[0]}",
parse_mode='html')
bot.polling(none_stop=True)
Выдает:
TypeError: '>=' not supported between instances of 'sqlite3.Cursor' and 'NoneType'
Как решить?