Задать вопрос
  • Как сделать премодерацию поста для канала?

    @dmitriy8720 Автор вопроса
    Vindicar, Подробности, Человек нажал старт, написал текст, нажал отправить, мне приходит, в чат бота, этот текст, с двумя кнопками, я проверяю и нажимаю Опубликовать и пост появляется на канале.
    Вопрос: как прописать, это в коде?
    Тоже самое, принцип текста, тот же, в описание вопроса.
    Кнопки я знаю, как прописать, но нужно, чтобы эти кнопки с постом, увидел, только я, в чате бота.
    И как прописать, все id? по идеи, мне нужно, перенаправить пост, сначала, обратно боту, прописать id админов и id канала.
  • Как сделать премодерацию поста для канала?

    @dmitriy8720 Автор вопроса
    Vindicar, Вы, не можете помочь, значит, не важно, вопрос это или задание. Я не знаю, что читать, может ссылки подскажите, как прописать 2 кнопки, чтобы, только админ, их видел? или только, по умничать можете, а на деле, помощи не дождёшься.
  • Как сделать премодерацию поста для канала?

    @dmitriy8720 Автор вопроса
    Vindicar, Помочь мне, как прописать, чтобы, сначала, я нажал Опубликовать и только тогда, чтобы появился пост. В вопросе, я подробно описал.
  • Приглашения в телеграм группу, надпись как сделать?

    @dmitriy8720 Автор вопроса
    Рас, Вам так легко, подскажите, как прописать.

    Есть такой код, мучаю этот код, очень долго, но таблица пуста, при добавление контакта.
    #База Данных
    conn = sqlite3.connect("zqmi_bot_t4_t2.db")
    c = conn.cursor()
    c.execute('''CREATE TABLE IF NOT EXISTS USERS
            (id INTEGER PRIMARY KEY NOT NULL, user_id INTEGER, username TEXT, name TEXT, new_chat_member INTEGER, chat_id INTEGER)''')
    conn.commit()
    
    class SQLither:
    
        def __init__(self, database) -> object:
            self.conn = sqlite3.connect(database)
            self.c = self.conn.cursor()
    
    
        def exists_user_chat(self, user_id):
            """Проверка существования пользователя в БД и в группе"""
            return bool(self.c.execute("SELECT * FROM users WHERE user_id=?", (user_id,)).fetchone())
    
        def add_to_db(self, user_id, username, name, chat_id, new_chat_members):
            """Добавление пользователя в БД"""
            self.c.execute("INSERT INTO users(user_id, username, name, chat_id, new_chat_member) VALUES(?,?,?,?,?)", (user_id, username, name, chat_id, new_chat_member))
            self.conn.commit()
    
    db = SQLither("zqmi_bot_t4_t2.db")
    
    
    @dp.message_handler(content_types=["new_chat_member"])
    async def new_member(message: types.ChatMemberUpdated):
    #async def new_member(self, update: types.ChatMemberUpdated):
    #async def handler_new_member(message: types.Message):
        user_id = message.from_user.id
        username = message.from_user.username
        name = message.from_user.full_name
        chat_id = message.chat.id
        new_chat_member = message.new_chat_member.user.id
    
        user_id = update.from_user.id
        username = update.from_user.username
        name = update.from_user.full_name
        chat_id = update.chat.id
        new_chat_member = update.new_chat_member.user.id
    
        #member = await bot.get_chat_member(chat_id=message.chat.id, user_id=message.from_user.id)
        #ChatMember = await bot.get_chat_member(chat_id=message.chat.id, user_id=message.from_user.id)
        #ChatMemberUpdated = await bot.get_chat_member(chat_id=message.chat.id, user_id=message.from_user.id)
    	
        if db.exists_user_chat(user_id):
            member = await bot.get_chat_member(chat_id=message.chat.id, user_id=message.from_user.id)
            ChatMemberUpdated = await bot.get_chat_member(chat_id=message.chat.id, user_id=message.from_user.id)
            ChatMember = await bot.get_chat_member(chat_id=message.chat.id, user_id=message.from_user.id)
            ChatMemberUpdated = await bot.get_chat_member(chat_id=update.chat.id, user_id=update.from_user.id)
            ChatMember = await bot.get_chat_member(chat_id=update.chat.id, user_id=update.from_user.id)
            #if message.from_user.id in message.new_chat_members:
            if ChatMember.status in ChatMemberUpdated.values:
                db.add_to_db(user_id, username, name, new_chat_member, chat_id)
                return
  • Как получить количество приглашенных в группу?

    @dmitriy8720 Автор вопроса
    nedland, Подскажите, как мне это прописать?

    Сделал так, но вся таблица пуста, при добавление, одного контакта, в группу.
    #База Данных
    conn = sqlite3.connect("zqmi_bot_t2.db")
    c = conn.cursor()
    c.execute('''CREATE TABLE IF NOT EXISTS USERS
            (id INTEGER PRIMARY KEY NOT NULL, user_id INTEGER, username TEXT, name TEXT, new_chat_members INTEGER, chat_id INTEGER)''')
    conn.commit()
    #conn.close()
    
    class SQLither:
    
        def __init__(self, database) -> object:
            self.conn = sqlite3.connect(database)
            self.c = self.conn.cursor()
    
    
        def exists_user_chat(self, user_id):
            """Проверка существования пользователя в БД и в группе"""
            return bool(self.c.execute("SELECT * FROM users WHERE user_id=?", (user_id,)).fetchone())
    
        def add_to_db(self, user_id, username, name, new_chat_members, chat_id):
            """Добавление пользователя в БД"""
            self.c.execute("INSERT INTO users(user_id, username, name, new_chat_members, chat_id) VALUES(?,?,?,?,?)", (user_id, username, name, new_chat_members, chat_id))
            self.conn.commit()
    
    db = SQLither("zqmi_bot_t2.db")
    
    
    @dp.message_handler(content_types=["new_chat_members"])
    async def new_member(message: types.ChatMemberUpdated):
        user_id = message.from_user.id
        username = message.from_user.username
        name = message.from_user.full_name
        chat_id = message.chat.id
        new_chat_members = message.new_chat_members
    
        if not db.exists_user_chat(user_id):
            if message.from_user.id in message.new_chat_members:
                if new_chat_members.status == 'member':
                    db.add_to_db(message.from_user.id, username, name, new_chat_members, message.chat.id)
  • Как получить количество приглашенных в группу?

    @dmitriy8720 Автор вопроса
    nedland, Изменил.
    def add_to_db(self, user_id, username, name, new_chat_members, chat_id):
            """Добавление пользователя в БД"""
            self.c.execute("INSERT INTO users(user_id, username, name, new_chat_members, chat_id) VALUES(?,?,?,?,?)", (user_id, username, name, new_chat_members, chat_id))
            self.conn.commit()


    Так же, мне нужно, чтобы тут, было user_id, chat_id, new_chat_members

    def exists_user_chat(self, user_id, chat_id, new_chat_members):
            """Проверка существования пользователя в БД и в группе"""
            #return bool(self.c.execute("SELECT * FROM users WHERE user_id=?", (user_id,)).fetchone())
            return bool(self.c.execute("SELECT * FROM users WHERE user_id=? and chat_id=? and new_chat_members=?", (user_id, chat_id, new_chat_members,)).fetchone())


    Но, теперь ошибка.
    self.c.execute("INSERT INTO users(user_id, username, name, new_chat_members, chat_id) VALUES(?,?,?,?,?)", (user_id, username, name, new_chat_members, chat_id))
    sqlite3.InterfaceError: Error binding parameter 3 - probably unsupported type.


    НО, тоже ошибка.
    return bool(self.c.execute("SELECT * FROM users WHERE user_id=? and chat_id=? and new_chat_members=?", (user_id, chat_id, new_chat_members,)).fetchone())
    sqlite3.InterfaceError: Error binding parameter 2 - probably unsupported type.


    У меня на хостинге, с одним and работает user_id=? and chat_id=?, а если и для new_chat_members=? то не хочет
    return bool(self.c.execute("SELECT * FROM users WHERE user_id=? and chat_id=? and new_chat_members=?", (user_id, chat_id, new_chat_members,)).fetchone())
  • Почему, не реагирует на фото, во 2раз?

    @dmitriy8720 Автор вопроса
    o5a, подскажите код, как это все прописать.
  • Почему, не реагирует на фото, во 2раз?

    @dmitriy8720 Автор вопроса
    Elvis, может. Мне нужно, чтобы на каждую публикация, с фото, отправлялся 1текст, без дублирования, по количеству фото.
  • Почему, не реагирует на фото, во 2раз?

    @dmitriy8720 Автор вопроса
    Elvis, Подскажите код, как прописать, Вы мне можете помочь? или нет.
  • Почему, не реагирует на фото, во 2раз?

    @dmitriy8720 Автор вопроса
    Как прописать, ему обратно None? или подскажите как отказаться от flag_group_id, чтобы дублирование текста не было и чтобы, на каждую отправку фото, отправлял текст
  • Удалить запрещённое слово, но ошибка, как исправить?

    @dmitriy8720 Автор вопроса
    Сергей c0re, И как получить, идентификатор пользователя отправителя, время сообщения и удалить сообщения, за промежуток времени, например 5мин ?
  • Удалить запрещённое слово, но ошибка, как исправить?

    @dmitriy8720 Автор вопроса
    Сергей c0re, Естественно, если публикуйте, как галерея, из нескольких фото, то есть отмечается несколько фото, например 5 и в подписи, присутствует запрещенное слово, соответственно, все фото, должны удалится, или это не возможно, так прописать?
  • Удалить запрещённое слово, но ошибка, как исправить?

    @dmitriy8720 Автор вопроса
    o5a, Подскажите, как исправить, чтобы все фото удалялись, а не 1фото с подписью запрещённоеслово, а другие, остаются в группе.
  • Удалить запрещённое слово, но ошибка, как исправить?

    @dmitriy8720 Автор вопроса
    Ваш вариант, не работает, ругается на эту строку, при отправке фото и не удаляет
    message.photo is not None and bad_words[f] in message.photo.lower() or


    ошибка
    AttributeError: 'list' object has no attribute 'lower'

    632349ae584c8388212213.jpeg
  • Почему Цикл неправильно завершается?

    @dmitriy8720 Автор вопроса
    Спасибо, только пользователю soremix, а все остальные, бесполезные комментаторы, только одни вопросы задают мне, хотя помогать нужно.
  • Почему Цикл неправильно завершается?

    @dmitriy8720 Автор вопроса
    soremix, что то понял, но не пойму как это все прописать.
  • Как удалить урл в подписи к фото?

    @dmitriy8720 Автор вопроса
    Благодарю Вас, теперь работает и удаляет урл.
  • Не видит анонимного Администратора, как исправить?

    @dmitriy8720 Автор вопроса
    Благодарю, вопрос уже сам решил, как говорится, методом эксперимента, вот таким кодом.
    member = await bot.get_chat_member(message.chat.id, message.from_user.id)
    if member.user.username == 'GroupAnonymousBot':
    #if member.user.first_name == 'Group':
        return

    Оба варианта работают и ни чего не удаляет.

    Это я делал, подписку на канал, если пользователь не подписан, то стена закрывается и две кнопки, ссылка на канал и кнопка проверить и как нажимает пользователь кнопку проверить, стена открывается и пользователь, свободно пишет в группе.
  • Как проверить подписан ли пользователь на канал?

    @dmitriy8720 Автор вопроса
    soremix, Прописал так, но что то результата нет, хотя ошибок нет.
    @dp.message_handler(commands=['myCommand'])
    async def my_command(message: types.Message):
        if message.chat.type != "supergroup, private, channel":
            return
        user_status =  await get_chat_member(channel_id, message.from_user.id)
        #user_status = await bot.get_chat_member(chat_id=message.chat.id, user_id=message.from_user.id)
        if isinstance(user_status, types.ChatMemberMember):
            if user_status["status"] != 'member':
                await bot.restrict_chat_member(message.chat.id, message.from_user.id, can_send_messages=True)
                return


    Эту команду прописал в боте /myCommand
  • Как проверить подписан ли пользователь на канал?

    @dmitriy8720 Автор вопроса
    soremix, Прописал так, не по команде, а чтобы разблокировал, но результата нет, стена закрыта.
    @dp.message_handler()      
    #async def check(message):
    #async def on_joined(message: types.Message):
    async def check_new_user(message: types.Message):
        for user_status in message.text:
            user_status = await bot.get_chat_member(chat_id=message.chat.id, user_id=message.from_user.id)
            if message.chat.type != "supergroup, private, channel":
                return
            if isinstance(user_status, types.ChatMemberMember):
              if user_status["status"] != 'left':
                await bot.restrict_chat_member(message.chat.id, message.from_user.id, can_send_messages=False)
                await bot.send_message(message.from_user.id, "Вы уже находитесь в канале!")
              else:
                  if isinstance(user_status, types.ChatMemberMember):
                      if user_status["status"] != 'member':
                          await bot.unban_chat_member(chat_id=message.chat.id, user_id=message.from_user.id)
                          #await bot.restrict_chat_member(message.chat.id, message.from_user.id, can_send_messages=True)
                          print(user_status)
                          return