Main:
БД:
Сам код я ещё не чистил, но вообщем...
Бот должен отправлять сообщение от одного пользователя - всем, кто есть в таблице БД, кроме себя. При вводе в него любого сообщения - отправляет его ВСЕМ.

Хотелось бы узнать, как можно починить def selectuser, а также идеи об улучшение кода.
Python:
@bot.message_handler(content_types = ['text', 'photo'])
def userchating(message):
if message.chat.type == 'private':
if message.text == '🚀Добавитись в БД🚀':
adduser(message)
elif message.text == '🚀Видалитись з БД🚀':
removeuser(message)
else db.user_exists(message.from_user.id):
userlist = db.selectuser(message.from_user.id)
sended = 0
for user in userlist:
if user[0] == message.from_user.id: pass
else:
try:
if message.photo:
bot.send_photo(user[0], message.photo[0].file_id)
elif message.text:
bot.send_message(user[0], message.text)
sended+=1
except Exception as e: print(f"[Error] {e}")
bot.send_message(message.from_user.id, f"Відправлено {sended} повідомлень!")
else:
pass
Код:
import sqlite3
class Database:
def __init__(self, database_file):
self.connection = sqlite3.connect(database_file, check_same_thread = False)
self.cursor = self.connection.cursor()
def add_user(self, chat_id, username):
with self.connection:
return self.cursor.execute("INSERT INTO `userchat` (`chat_id`, `username`) VALUES (?,?)", (chat_id, username,))
def selectuser(self, chat_id):
with self.connection:
return self.cursor.execute("SELECT `chat_id` FROM `userchat` WHERE `chat_id` = ?", (chat_id,)).fetchall()
#return self.cursor.execute("SELECT `chat_id` FROM `userchat` WHERE `chat_id` = ?", (chat_id,)).fetchall()
#return self.cursor.execute("SELECT * FROM `userchat` WHERE `chat_id` = ?", (chat_id,)).fetchall()
def user_exists(self, chat_id):
with self.connection:
result = self.cursor.execute("SELECT `chat_id` FROM `userchat` WHERE `chat_id` = ?", (chat_id,)).fetchmany(1)
#result = self.cursor.execute("SELECT * FROM `userchat` WHERE `chat_id` = ? AND `username` = ?",(chat_id,username,)).fetchmany(1)
return bool(len(result))
def remove_user(self, chat_id, username):
with self.connection:
return self.cursor.execute("DELETE FROM `userchat` WHERE `chat_id` = ? AND `username` = ?",(chat_id,username,)).fetchmany(1)
Сам код я ещё не чистил, но вообщем...
Бот должен отправлять сообщение от одного пользователя - всем, кто есть в таблице БД, кроме себя. При вводе в него любого сообщения - отправляет его ВСЕМ.

Хотелось бы узнать, как можно починить def selectuser, а также идеи об улучшение кода.