Написал бота, что должен высылать сообщение всем пользователям БД, кроме себя самого, но наткнулся на две ошибки:
- один облик для всех в БД
( От другого человека )
- сообщение приходят самому себе
.... main ....
....bd....
Где ошибка и как её исправить?
- один облик для всех в БД
( От другого человека )
- сообщение приходят самому себе
.... main ....
Python:
import telebot
import config
#import keyboard
from database import Database
from telebot import types
bot = telebot.TeleBot(config.TOKEN)
db = Database('database.db')
@bot.message_handler(commands = ['start'])
def start(message):
bot.send_message(message.chat.id, 'WELCOME!')
@bot.message_handler(commands = ['add'])
def adduser(message):
if message.chat.type == 'private':
if not db.user_detector(message.from_user.id,):
db.add_userinfo(message.from_user.id,message.from_user.username,)
db.add_userchat(message.from_user.id,)
bot.send_message(message.chat.id, 'Вы в БД')
elif db.user_detector(message.from_user.id,):
bot.send_message(message.chat.id, 'Вы уже есть в БД')
else:
bot.send_message(message.chat.id, 'Ошибка')
@bot.message_handler(content_types = ['text'])
def chating(message):
if message.chat.type == 'private':
if db.user_detector(message.from_user.id):
userlist = db.all_user(message.from_user.id)
sended = 0
for user in userlist:
try:
if user[0] != message.from_user.id:
bot.send_message(user[0], message.text)
sended+=1
print(userlist)
except Exception as e: print(f"[Error] {e}")
print(userlist)
bot.send_message(message.from_user.id, f"Сообщений {sended} отправлено!")
else:
bot.send_message(message.chat.id, "Я лох")
bot.polling(none_stop = True )
....bd....
Python:
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 user_detector(self, chat_id):
with self.connection:
result = self.cursor.execute("SELECT `chat_id` FROM `userchat`").fetchmany(1)
return bool(len(result))
def all_user(self, chat_id):
with self.connection:
result = self.cursor.execute("SELECT `chat_id` FROM `userchat`").fetchall()
return result
def add_userinfo(self, chat_id, username):
with self.connection:
return self.cursor.execute("INSERT INTO `userinfo` (`chat_id`, `username`) VALUES (?,?)", (chat_id, username,))
def add_userchat(self, chat_id):
with self.connection:
return self.cursor.execute('INSERT INTO `userchat` (`chat_id`) VALUES (?)', (chat_id,))
Где ошибка и как её исправить?