Я разрабатываю тг бота, в нем будет функция общения внутри бота. Я написал код, но он работает со всеми пользователями. Тоесть каждый общается с кем хочет, а мне нужно чтобы общаться могли только с одним заданным id которое я впишу в код
Код python
#функция общения
@bot.message_handler(content_types=['text'])
def txt(message):
if message.chat.type == 'private':
if message.text == 'Знайти співрозмовника' or message.text == '♐️Наступний співбеседник':
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn2 = types.KeyboardButton('❌Зупинити пошук')
markup.add(btn2)
chat_two = db.get_chat()
if db.create_chat(message.chat.id, chat_two) == False:
db.add_queue(message.chat.id)
bot.send_message(message.chat.id, "Пошук співбеседника . . .", reply_markup=markup)
else:
mess = "Співрозмовника знайдено! Щоб покинути чат, тисни на ➡️ /stop"
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn5 = types.KeyboardButton('/stop')
btn10 = types.KeyboardButton('♐️Наступний співбеседник')
btn11 = types.KeyboardButton('Надати свій профіль ')
markup.add(btn5, btn10, btn11)
bot.send_message(message.chat.id, mess, reply_markup=markup)
bot.send_message(chat_two, mess, reply_markup=markup)
SQL
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_queue(self, chat_id):
with self.connection:
return self.cursor.execute('INSERT INTO queue (chat_id) VALUES (?)', (chat_id,))
#удаление из очереди
def delete_queue(self, chat_id):
with self.connection:
return self.cursor.execute("DELETE FROM queue WHERE chat_id = ?", (chat_id,))
#удаление из чата
def delete_chat(self, id_chat):
with self.connection:
return self.cursor.execute('DELETE FROM chats WHERE id = ?', (id_chat,))
# получение чата
def get_chat(self):
with self.connection:
chat = self.cursor.execute('SELECT * FROM queue', ()).fetchmany(1)
if bool(len(chat)):
for row in chat:
return row[1]
else:
return False
#создание чата между пользователями
def create_chat(self, chat_one, chat_two):
with self.connection:
if chat_two != 0:
self.cursor.execute("DELETE FROM queue WHERE chat_id = ?", (chat_two,))
self.cursor.execute('INSERT INTO chats (chat_one, chat_two) VALUES (?,?)', (chat_one, chat_two,))
return True
else:
return False
#получение чата
def get_active_chat(self, chat_id):
with self.connection:
chat = self.cursor.execute("SELECT * FROM chats WHERE chat_one = ?", (chat_id,))
id_chat = 0
for row in chat:
id_chat = row[0]
chat_info = [row[0], row[2]]
if id_chat == 0:
chat = self.cursor.execute("SELECT * FROM chats WHERE chat_two = ?", (chat_id,))
for row in chat:
id_chat = 0
chat_info = [row[0], row[1]]
if chat_id == 0:
return False
else:
return chat_info
else:
return chat_info
def add_user_to_database(user_id, name, age):
conn = sqlite3.connect('database.db')
cursor = conn.cursor()
cursor.execute("INSERT INTO users (id, name, age) VALUES (?, ?, ?)", (user_id, name, age))
conn.commit()
conn.close()
def get_user_from_database(user_id):
conn = sqlite3.connect('database.db')
cursor = conn.cursor()
cursor.execute("SELECT * FROM users WHERE id=?", (user_id,))
user = cursor.fetchone()
conn.close()
return user