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

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    Чет дичь какая-то, триггеры в базе юзают внутри самой базы. Например при создании юзера создавать ему профайл, статистику и прочие записи в разных таблицах. Ни разу не слышал, чтобы триггер в бд отправлял сообщения в телеграм)

    Единственное что можно сделать при помощи тригера в этом деле - это добавить сообщение в импровизированную очередь и оттуда уже какой-либо воркер на питоне будет собирать инфу и отсылать письма в телегу.

    А так правильнее было бы в методе создания реферала дополнительно отправлять письмо в телегу.
    Ответ написан
  • Как рандомно открыть фотки в Телеграмм Боте на Python?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    У тебя есть папки (Москва, Питер, Казань и т.д.) В каждой из них еще есть папки (допустим в Москве есть папка кремль). В Этой папке кремль есть txt и фотки.

    Пусть юзер нажал кнопку "Москва". Там есть 3 папки: Кремль, Набережная, Воробьевы горы. Далее мы получаем список всех подпапок папки Москва и рандомом выбираем любую. Получаем её имя, заходим в нее и получаем все фотки (можно именовать 1.jpg, 2.jpg и т.д. или же получать список всех файлов по определенным расширениям jpg, png и т.д.), txtшник желательно именовать всегда одинаково (допустим desc.txt).

    И отправляем все это дело пользователю.

    Страшная задача "Как рандомно открыть фотки в Телеграмм Боте на Python?" выливается в несколько маленьких подзадач, решения которых лежат в интернете и находятся в свободном доступе)
    Ответ написан
    Комментировать
  • Бот написанный на Python не работает после выключения компьютера?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    Бот на Python - эта та же самая программа. А программа должна где-то исполняться.

    В твоем случае она исполняется на твоем компьютере. Когда ты выключаешь компьютер - все программы, которые на нем исполнялись - перестают исполняться. Поэтому бот и не работает.

    Своего бота ты можешь разместить на любом vds/vps или выделенном сервере. Также можно воспользоваться хостингом приложений в облаке по типу heroku.
    Ответ написан
    Комментировать
  • Как запустить два и более longpool ВК ботов на одном сервере?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    Да без проблем, запускай.

    Просто каждого бота загоняй в screen, чтобы они могли работать после отключения от ssh.
    Ответ написан
  • Как ограничить количество запросов после многократных нажатий на кнопку?

    pro100chel
    @pro100chel
    Python && PHP Developer
    Самое простое что можно сделать - заносить перед запросом в базу id юзера в список какой-нибудь. А после запроса в базу - удалять из списка. При регистрации проверять наличие id юзера в этом списке. Если он там есть - ничего не делаем.

    ======
    Еще один способ. Вынести процесс регистрации юзера в отдельный поток. Это позволит в порядке очереди обслуживать запросы на регистрацию и не допускать дубли в базе.
    =======
    Еще способ. В базе на id юзера ставить уникальный индекс. Это на уровне СУБД не даст сделать дубль.
    Ответ написан
  • Как отправить изображение с imgur в Telegram Bot Python?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    Потому что по ссылке html страница, а не фотка. Надо делать так

    bot.send_photo(message.chat.id, get('https://i.imgur.com/yaBianG.jpeg').content)
    Ответ написан
    Комментировать
  • Как имея username узнать ID пользователя в Telegram?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    Средствами телеграма никак.

    Ты можешь держать таблицу с соответствием id - username. И оттуда уже брать данные.

    Также нельзя забывать про возможность смены username. Так что нужно делать возможность обновления этой таблицы при смене username.

    PS: username юзера можно получить при:

    1) Получении от него сообщения
    2) Отправке ему сообщения

    Поэтому лучше всего при отправке каждого сообщения пользователю смотреть на его username и если он изменился то обновлять соответствие в таблице.

    Или же в случае если юзер давно не пишет то отправлять ему сообщение, смотреть его username и сразу же удалять сообщение
    Ответ написан
    3 комментария
  • Как использовать функцию if много раз?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    Выкинуть эту функцию в отдельный поток и пусть она там себе исполняется каждую минуту
    Ответ написан
  • Что мне поможет в создании бота?

    pro100chel
    @pro100chel
    Python && PHP Developer
    Дружок, в этом случае тебе поможет только фриланс

    А так, если просто информация то курлом отправлять сообщение в телегу.

    А если бот то можно хукаться на пыху

    Можно и на python сделать пулингом, можно и на питон хукаться.

    Можно комбинировать. У меня, например инфа (уведомления) поступает из PHP, а логика бота написана на Python + aiogram
    Ответ написан
  • Почему телеграмм бот выключается от нагрузки памяти на хостинге?

    pro100chel
    @pro100chel
    Python && PHP Developer
    Мб ты где-то заполняешь список, словарь или что-нибудь еще и не очищаешь.
    Ответ написан
    5 комментариев
  • Как реализовать передачу данных между игроками в Телеграм боте?

    pro100chel
    @pro100chel
    Python && PHP Developer
    Наверн нужно где-то эти данные сохранять? А потом передавать другому игроку.
    А где хранить это уже тебе решать.
    Ответ написан
    3 комментария
  • Как сделать команду "стоп" для бота вконтакте? И как сделать так,что бы только его владеле мог им пользоваться,а не любой,кто напишет нужную команду?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    Проверка на содержание id приславшего команду в списке или таблице в базе.
    Можно захардкодить. На твоем уровне позволительно.
    Можно засунуть в конфиг и вынести в json или другой python файл.
    Ответ написан
    3 комментария
  • Возможно ли сделать этого бота, если да, то как?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    Возможно. Это можно сделать написав скрипт на ЯП Python.

    Немного работы с discord api и базой данных, но в целом, возможно
    Ответ написан
    Комментировать
  • Как сделать телеграм бот работоспособным?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    from pyowm import OWM
    from pyowm.utils.config import get_default_config
    config_dict = get_default_config()
    config_dict['language'] = 'RU'
    import telebot
    
    owm = OWM('a91bee44d09a57842353573df6d4e01a')
    bot = telebot.TeleBot("1058623246:AAEbGu0nyd681DjRmpWx217WRx2VFi1VJsw")
    mgr = owm.weather_manager()
    
    @bot.message_handler(content_types=['text'])
    def send_echo(message):
      #bot.reply_to(message, message.text)
        observation = owm.weather_at_place( message.text )
        w = observation.weather
        temp = w.temperature ( 'celsius' )["temp"]
    
        answer = " В городе " + message.text + " cейчас " + w.detailed_status + "\n"
        answer += " Температура в выбранном городе соответствует " + str(temp) + " градусам по шкале Цельсия" +"\n"
    
        if temp < 15 :
            answer+=  " На улице холодно, надевай валенки"
        elif 20 > temp > 14 :
            answer+=  " Ну такое"
    
        elif 19 < temp < 27 :
            answer+=  " Комфортно, сер"
        else :
            answer+=  " Жарко чет"
        bot.send_message(message.chat.id, answer)
    
    bot.polling(none_stop=True)


    Нашел различия?

    А вот оно:

    У тебя так написано:
    answer = " В городе " + message.text + " cейчас " + w.detailed_status() + "\n"


    А у меня так:
    answer = " В городе " + message.text + " cейчас " + w.detailed_status + "\n"


    Ты как бы понимай различия между вызовом метода у объекта и получением его свойства.
    Ответ написан
    Комментировать
  • Как запрограмировать бота так, чтобы он отправлял сообщение всем пользователям в одно и тоже время?

    pro100chel
    @pro100chel Куратор тега Python
    Python &amp;&amp; PHP Developer
    Обычным циклом. Для этого в списке в скрипте или же в базе нужно хранить список с id юзеров, которым нужно отправить сообщение.
    Только если юзеров слишком много (вроде больше 30), то у тебя не получится одновременно всем отослать. У телеги стоит ограничение в 30 запросов в секунду.
    Ответ написан
    Комментировать
  • Как принять POST запрос в python?

    pro100chel
    @pro100chel Куратор тега Python
    Python &amp;&amp; PHP Developer
    Тебе нужно либо юзать фреймворк уже готовый (Django, Flask).
    Либо юзать http сервер из питона, например, https://docs.python.org/3/library/http.server.html.
    Или пиши свой веб-сервер на сокетах.
    Или же юзай PHP и не замарачивайся.

    Из решений нашел только Flask, Django, пытался запустить, с лонг поллингом оно не вяжется, просто запускается сервер фласка, джанго очень громоздкий и тяжеловесный вариант, вряд ли это удобно использовать


    По идее это должно запускаться в разных скриптах, если нужно взаимодействие между скриптами, то юзай брокеры сообщений, можно очереди или же просто сокеты.
    Ответ написан
  • Не работает код Бота для дискорд. Как решить?

    pro100chel
    @pro100chel Куратор тега Python
    Python &amp;&amp; PHP Developer
    У тебя случаем скрипт с ботом называется не discord.py?

    Согласно доке, нужно делать так:

    @client.command(pass_context = True)
    @commands.has_permissions(administrator = True)
    
    async def help(ctx):
        emb = discord.Embed(title ='Навигация по командам')  # Здесь Embed с заглавной буквы тк класс в документации пишется с заглавной буквы https://discordpy.readthedocs.io/en/latest/api.html?highlight=embed#discord.Embed
    
        emb.add_field(name = '{}clear'.format ("."), value = 'Очистка чата')
        emb.add_field(name = '{}kick'.format ("."), value = 'Выгнать пользователя')
        emb.add_field(name = '{}ban'.format ("."), value = 'Блокировка пользователя')
        emb.add_field(name = '{}Дополнительное'.format ("."), value = 'Бот достаточно умный, так что он будет отвечать на ваши приветствия!')
        await ctx.send(embed = emb)  # Здесь с маленькой тк переменная embed в методе send пишется с маленькой буквы https://discordpy.readthedocs.io/en/latest/ext/commands/api.html?highlight=send#discord.ext.commands.Context.send
    Ответ написан
  • Как зделать бота который надсылает одно и то же сообщение каждые 30 минут?

    pro100chel
    @pro100chel Куратор тега Python
    Python &amp;&amp; PHP Developer
    Короче. Подскажу только алгоритм. С докой Tg сам разберешься, если тебе надо.
    import threading
    import time
    
    def sender():
        global last_send
        while True:
            if not stop and (time.time() - last_send) > (30*60):
                ...
                last_send = time.time()
            time.sleep(1)
    
    stop = False
    last_send = 0
    t = threading.Thread(target=sender)
    t.start()
    
    while True:
        inp = input()
        if inp == 'stop':
            stop = True
        elif inp == 'start':
            stop = False
    Ответ написан
    2 комментария