Задать вопрос
@hardux2821

Функция телеграм бота общения?

Я разрабатываю тг бота, в нем будет функция общения внутри бота. Я написал код, но он работает со всеми пользователями. Тоесть каждый общается с кем хочет, а мне нужно чтобы общаться могли только с одним заданным 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
  • Вопрос задан
  • 82 просмотра
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы