Ответы пользователя по тегу Telegram
  • Как запускать один код в другом коде?

    Shurik24
    @Shurik24
    Обычный программист самоучка
    Ты можешь создать 2 фалика в одной папке и импортировать их
    Пример такого кода
    main.py # Наш основной код

    import user
    
    def main():
        name = input("Введите имя\n>>")
        user.bar(name)
    
    if __name__ == '__main__':
        main()


    user.py # Наш второй файл

    def bar(user: str):
        print(f'Hello {user}!')
    Ответ написан
    Комментировать
  • Возможно ли получить id канала в Telegram с помощью Pyrogram без @username?

    Shurik24
    @Shurik24
    Обычный программист самоучка
    Ну если я верно понял ты пытаешь создать канал и получит его ID, дабы потом с ним взаимодействовать
    В документации отлично описано что create_channel возвращает при успехе объект chat
    Он же в себе уже имеет chat id

    await channel = app.create_channel('Channel Title', 'Channel Description') # Здесь может быть ошибка с await
    print(channel) # Покажет тебе все что есть в объекте

    Давно не работал с await поэтому не знаю правильно ли написал
    Ответ написан
    Комментировать
  • Python бот для Telegram, как сделать так чтобы id пользователей с определённым балансом записывался в text файл?

    Shurik24
    @Shurik24
    Обычный программист самоучка
    Если я верно понимаю ты хочешь вытащить из базы данных всех у кого баланс выше определённого числа
    Тогда тебе нужно сделать SQL запрос к базе данных примерно такого типа:
    SELECT tgid, money FROM mytable WHERE money>10
    Вроде верно написал, по сути он вытащит всех у кого баланс будет больше 10
    Тебе нужно лишь заменить значения на свои (tgid/money/mytable)
    Ответ написан
    Комментировать
  • Telebot не разрешает команды "commands"?

    Shurik24
    @Shurik24
    Обычный программист самоучка
    @bot.message_handler(commands = ['start'])
    def start(message):
        bot.send_message(message.chat.id, "Привет ✌️ ")


    У тебя табуляция не соблюдена это первое, а то что он выдает такую ошибку плохо, возможно у тебя не тот модуль установлен

    Есть 2 модуля которые импортируются как telebot
    Тот что ты пытаешься использовать называется pytelegrambotapi а ты скорее всего установил telebot

    pip uninstall telebot
    pip install pytelegrambotapi

    Попробуй удалить telebot и установить правильный
    Ответ написан
    Комментировать
  • Многопользовательские сигналы телеграм бота?

    Shurik24
    @Shurik24
    Обычный программист самоучка
    В твоем случаем можно при активации бота записывать в базу данных ID улицу и активирован ли бот,
    И так в бд 3 пользователя
    151424 Пушкина True
    125463 Кукушкина False
    124143 Гениальная True

    Бот берет из базы данных тех пользователей у которых бот активирован (Ну вот не надо уже пользователю знать температуру каждый час)
    И просто каждый час берем всех из бд и циклом запрашиваем температуру по улице и отправляем на ID
    Ответ написан
  • Как сделать, чтобы бот отвечал главным меню на любое сообщение?

    Shurik24
    @Shurik24
    Обычный программист самоучка
    Есть 2 варианта вернуться в главное меню через команду к примеру /menu или же создай "команду" из метода on_message() которая вернет пользователя в главное меню, правда если пользователь сделает ошибку в команде его вернет в начало, это не очень хорошо
    Нужно еще добавить, создавая команду из метода on_message() будь осторожен и делай это последней командой в коде, если она будет первой все команды после нее не будут определяться и будут игнорироваться
    Ответ написан
    Комментировать
  • Как делать рассылки и смотреть подписчиков в Telegram боте на Python?

    Shurik24
    @Shurik24
    Обычный программист самоучка
    Если это чат с пользователями и ботом можешь использовать get_chat_members()
    В разных библиотеках по разному называться методы читай документацию
    Тебе вернет dict с пользователями (Имя, ID, и дофига еще инфы)
    Циклом проходишься по пользователям, берешь ID и отправляешь сообщения, но я не рекомендую так делать, лишний спам от бота не приятен
    Сделай в боте функцию рассылки и пусть пользователь сам решает хочет он получать рассылку или нет
    Ответ написан
    Комментировать
  • Как обойти пользователей, которые заблокировали бота, при рассылке?

    Shurik24
    @Shurik24
    Обычный программист самоучка
    Рекомендую уйти от txt файлов в сторону базы данных, создать табличку users в нее записывать TgID Block
    По нормальному все новы юзеры имеют такую запись
    100000 False (Телеграм ID, Заблокирован?)
    Во время отправки сообщения пользователю использовать try except
    try:
        send_message(my message)
    except:
       db.set(update Block = True, where TgID = telegramid) #Это вообще вымышленная работа с бд ибо фиг знает какую будешь юзать

    Ну и когда будешь снова рассылать сообщения просто возьмешь все ID у которых Block = Flase
    А коль не хочешь изучать как юзать базы данных (а жаль штучка хорошая :С ) можно просто сделать так
    try:
       send_message(my message)
    except:
       pass
    Ответ написан
    Комментировать
  • Как сделать, чтобы бот ждал сообщение от пользователя который отправил команду?

    Shurik24
    @Shurik24
    Обычный программист самоучка
    Проверяй message.from_user.id если разные игнорируешь если одинаковые продолжаешь
    Ответ написан
    2 комментария
  • Как осуществить шифр цезаря в Telegram боте?

    Shurik24
    @Shurik24
    Обычный программист самоучка
    def get_arg(arg):
        return arg.split()[1:]
    
    @bot.message_handler(commands = ['encrypt'])
    def msg_encrypt(message):
        arg = get_arg(message.text)
        if len(arg) >= 2:
            bot.reply_to(message,f"{encrypt(arg[0:-1], arg[-1])}")
        else:
            bot.reply_to(message,'Вы не указали параметры шифрования!\nПример: `/encrypt {Ваше сверх секретное сообщение} {ключ}`', parse_mode = 'Markdown')


    Код довольно сырой, но я сделал тебе базу просто доработай ее, думаю с расшифровкой справишься
    А и я тут уже вижу свои ошибки по типу encrypt будет получать лист а не строку но я думаю ты сможешь сделать функцию трансформации листа в строку, коль лень отпиши скину он там всего пару строк, но я человек ленивый было лень искать где он
    Ответ написан
    Комментировать
  • В чем заключается ошибка, Python Aiogram?

    Shurik24
    @Shurik24
    Обычный программист самоучка
    Тут все написано на английском, и все и так понятно

    Перевод ошибки примерно такой:
    Не могу найти файл или директорию '4.jpg'

    Проблема в том что ты лишь просмотрел путь к этим картинкам но при по пытке взять этот файл бот находиться в своей директории (То есть там где ты запустил .py скрипт)

    files = random.choice(list(os.walk('C:/Users/andis/Desktop/Python/EasyBot/Picture'))[0][-1])
    img = open(f'C:/Users/andis/Desktop/Python/EasyBot/Picture/{files}', 'rb')


    Это должно починить проблему, так-же ты можешь менять глобально директории через модуль os
    Ответ написан
  • Как на aiogram'e отправлять сообщения с каким либо форматированием?

    Shurik24
    @Shurik24
    Обычный программист самоучка
    client.send_message(message.chat.id, '`test`', parse_mode = 'Markdown')

    parse_mode - Во многих модулях используется именно такая фигня для форматирования текста, точнее ты должен смотреть в документации твоего модуля
    Для telebot и pyrogram выдает следующий результат:
    bwVEyGy.png
    Ответ написан
    Комментировать
  • Как узнавать новый chat_id приватного чата?

    Shurik24
    @Shurik24
    Обычный программист самоучка
    Можно, при запуске бота командой "/start" добавлять chat_id пользователя в БД
    К примеру в модуле "telebot" это можно так реализовать
    @bot.message_handler(regexp='/start')
    def start(message):
        print(message.chat.id)
        #Ну сюда фигаришь дальше код, куда сохранять эти chat_id
    Ответ написан
    1 комментарий