Ответы пользователя по тегу Telegram
  • Можно ли менять фото при нажатии на Inline кнопку?

    SuckMyPython
    @SuckMyPython
    matrix.polling(none_stop=True)
    @bot.message_handler(commands=["editphoto"])
    def editfoto(message):
    	try:
    		kbi = telebot.types.InlineKeyboardMarkup()
    		btn = telebot.types.InlineKeyboardButton(text="Кнопка", callback_data='btn1')
    		kbi.add(btn)    #!		
    		foto1 = open('ozerx/botsend/photo1.png', 'rb')
    		bot.send_photo(message.chat.id, foto1, caption = "caption", reply_markup = kbi)
    	except:	
    		bot.send_message(message.chat.id, "Бот не смог отправить фото!")
    
    @bot.callback_query_handler(func=lambda call: True)
    def clbk(call):	
    	if call.data == 'btn1':
    		try:
    			foto2 = open('ozerx/botsend/photo2.png', 'rb')
    			bot.edit_message_media(media=telebot.types.InputMedia(type='photo', media=foto2, caption = "noitpac"), chat_id=call.message.chat.id, message_id=call.message.message_id)		
    		except:	
    			bot.send_message(call.message.chat.id, "Бот не смог изменить фото!")
    Ответ написан
    Комментировать
  • Telegram бот прячет кнопки. Как исправить?

    SuckMyPython
    @SuckMyPython
    matrix.polling(none_stop=True)
    one_time_keyboard=False
    Ответ написан
    Комментировать
  • Как перезагрузить телеграмм бот?

    SuckMyPython
    @SuckMyPython
    matrix.polling(none_stop=True)
    import os #импортируем модуль "os"
    
    @bot.message_handler(commands=["restart"]) #вызов по команде /restart; можно сделать и на кнопку
    def restart(message):
    	pid = str(os.getpid()) #получаем ProcessID запущенного бота
    	restarter = open('restarter.bat', 'w') #открываем/создаем батник
    	restarter.write('Taskkill /PID ' + pid + ' /F\nTIMEOUT /T 5 /NOBREAK\ncd C:\\Users\\smp\\Desktop\\SMP\\\nsmp.py') #записываем скрипт в батник		
    	restarter.close() #закрываем отредактированный батник
    	os.system('C:/Users/smp/Desktop/SMP/restarter.bat') #запускаем наш батник
    Ответ написан
  • Команда /stop для бота?

    SuckMyPython
    @SuckMyPython
    matrix.polling(none_stop=True)
    import os
    
    @bot.message_handler(commands=["stop"])
    def stop(message):
    	if message.from_user.username == cfg.Father:	
    		pid = str(os.getpid())
    		stoper = open('ozerx/stoper.bat', 'w')
    		stoper.write("Taskkill /PID " + pid + " /F")
    		stoper.close()
    		os.system('C:/Users/smp/Desktop/SMP/ozerx/stoper.bat')
    	else:
    		bot.send_message(message.chat.id, "Ты не Создатель бота; у тебя нет админ-прав, проваливай!")
    Ответ написан
  • Как исправить ошибку "name 'message' is not defined" в Телеграм Боте?

    SuckMyPython
    @SuckMyPython
    matrix.polling(none_stop=True)
    Ту вообще многое неправильно. Вот так будет лучше:
    # -*- coding: utf-8 -*-
    #^^^Если используешь русский текст указывай кодировку на всякий случай.
    
    import telebot
    from telebot import types
    
    token = 'здесьможетбытьвашатокешка'
    bot = telebot.TeleBot(token)
    
    @bot.message_handler(commands=['start'])
    def start_message(message):
    	bot.send_message(message.chat.id, 'Меня зовут бот. Чем могу вам помочь?')	#Здесь не надо отсылать клавиатуру, тем более ту которая не создана!
    
    @bot.message_handler(content_types=['text'])
    def get_text_messages(message):
    	kb = types.ReplyKeyboardMarkup()
    	kb.row('Калькулятор','Расписание')
    	kb.row('О нас','Помощь')
    	kb.row('Обратная связь')
    	bot.send_message(message.chat.id, 'К сожалению я еще не умею читать текст. Воспользуйтесь главным меню:', reply_markup=kb)	#Отправка меню
    	#bot.send_message(message.chat.id, "Выберите пункт меню:", reply_markup=markup) - Эта строка вообще лишняя, главное меню отправляется строкой выше.
    
    bot.polling(none_stop=True, interval=0)
    Ответ написан
    Комментировать
  • Как в боте telegram вызвать анимацию конфетти?

    SuckMyPython
    @SuckMyPython
    matrix.polling(none_stop=True)
    Это является встроенной функцией при ответах на опросниках, так что на данный момент никак. Официальный ответ с их сайта:5f02b524c64b4746567935.png
    Ответ написан
    Комментировать
  • Как бота подключить через прокси на python к телеграм?

    SuckMyPython
    @SuckMyPython
    matrix.polling(none_stop=True)
    Инфа 100% этот метод работает с приватным прокси:

    import telebot
    from telebot import apihelper

    TOKEN = '0000000:xxxxxxxxxxxxxxxxxxxxxxx'
    PROXY = 'login:password@ip:port' #(Логин и пароль от купленного прокси)

    apihelper.proxy = {'https':'socks5://' + PROXY}
    bot = telebot.TeleBot(TOKEN)

    ======================
    P.S. Если выдаёт ошибку иногда помогает вместо 'socks5://' заменить на 'socks5h://'

    И да самое главное - прокси должен быть переведёт на тип "SOCKS5"(делается в админке прокси, по крайней мере на proxy6.net), через тип "HTTPS" бот работать не будет.
    Ответ написан
    1 комментарий
  • Как сделать многоуровневое меню телеграм бота ( inline - callback) на python?

    SuckMyPython
    @SuckMyPython
    matrix.polling(none_stop=True)
    Надо добавить в bot.send_message необязательный параметр reply_markup=key (т.е. помимо отправления текста бот создаст меню), предварительно указав необходимую информацию.

    Вот пример на скорую руку (изменение 3 кнопки):

    @bot.message_handler(commands=["start"])
    def inline(message):
    	key = types.InlineKeyboardMarkup()
    	but_1 = types.InlineKeyboardButton(text="NumberOne", callback_data="NumberOne")
    	but_2 = types.InlineKeyboardButton(text="NumberTwo", callback_data="NumberTwo")
    	but_3 = types.InlineKeyboardButton(text="NumberTree", callback_data="NumberTree")
    	key.add(but_1, but_2, but_3)
    	bot.send_message(message.chat.id, "ВЫБЕРИТЕ КНОПКУ", reply_markup=key)
    
    @bot.callback_query_handler(func=lambda c:True)
    def inline(c):
    	if c.data == 'NumberOne':
    		bot.send_message(c.message.chat.id, 'Это кнопка 1')
    	if c.data == 'NumberTwo':
    		bot.send_message(c.message.chat.id, 'Это кнопка 2')
    	if c.data == 'NumberTree':
    		key = types.InlineKeyboardMarkup()
    		but_1 = types.InlineKeyboardButton(text="NumberOne", callback_data="NumberOne")
    		but_2 = types.InlineKeyboardButton(text="NumberTwo", callback_data="NumberTwo")
    		but_3 = types.InlineKeyboardButton(text="NumberTree", callback_data="NumberTree")
    		key.add(but_1, but_2, but_3)
    		bot.send_message(c.message.chat.id, 'Это кнопка 3', reply_markup=key)
    Ответ написан
    2 комментария