Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.03.2021, 21:21   #1
Егор2223
 
Регистрация: 18.02.2021
Сообщений: 7
По умолчанию Простой телеграм-бот

Вот код
Код:
import telebot
from telebot import types 
import configure
 
bot = telebot.TeleBot('*')
 
@bot.message_handler(commands = ['start']) 
def start_message(message):
 	bot.send_message(message.chat.id,'Привет,я бот который мониторит криптовалюту ,что тебя интересует ?')
 
@bot.message_handler(content_types = ['start'])
def markup(message):
    markup = types.ReplyKeyboardMarkup()
itembtna = types.KeyboardButton('a')
itembtnv = types.KeyboardButton('v')
itembtnc = types.KeyboardButton('c')
itembtnd = types.KeyboardButton('d')
itembtne = types.KeyboardButton('e')
markup.add(itembtna,itembtnv,itembtnc,itembtnd,itembtne)
bot.send_message(chat_id,'Choose one letter', reply_markup=markup) 
 
 
bot.polling()
Выдаёт такую ошибку .
Код:
C:\python>python Bot.py
Traceback (most recent call last):
  File "C:\python\Bot.py", line 19, in <module>
    markup.add(itembtna,itembtnv,itembtnc,itembtnd,itembtne)
AttributeError: 'function' object has no attribute 'add'

Последний раз редактировалось BDA; 09.03.2021 в 21:36.
Егор2223 вне форума Ответить с цитированием
Старый 08.03.2021, 08:32   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Код:
import telebot
from telebot import types 
import configure

bot = telebot.TeleBot('*')

@bot.message_handler(commands = ['start']) 
def start_message(message):
    kb_markup = types.ReplyKeyboardMarkup()
    itembtna = types.KeyboardButton('a')
    itembtnv = types.KeyboardButton('v')
    itembtnc = types.KeyboardButton('c')
    itembtnd = types.KeyboardButton('d')
    itembtne = types.KeyboardButton('e')
    kb_markup.add(itembtna, itembtnv, itembtnc, itembtnd, itembtne)
    bot.send_message(message.chat.id, 'Привет, я - бот, который мониторит криптовалюту, что тебя интересует?', reply_markup = kb_markup)

bot.polling()
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 09.03.2021, 19:24   #3
Егор2223
 
Регистрация: 18.02.2021
Сообщений: 7
По умолчанию Расскажите пожалуйста.

Данный код работает .

Код:
import telebot 
from telebot import types 
 
bot = telebot.TeleBot('')
 
@bot.message_handler(commands = ['start']) 	
def start_message(message):
    markup = types.InlineKeyboardMarkup()
    itm_button = types.InlineKeyboardButton(text='Выбирайте',url='https://www.rbc.ru/crypto/currency/btcusd')
    markup.add(itm_button)
    bot.send_message(message.chat.id,'КуКу', reply_markup=markup)
 
 
bot.polling(none_stop=True)
bot.polling(interval=3)
 
while True: 
    pass
Почему когда я предаю 1 параметр в itm_button = types.InlineKeyboardButton , перестаёт работать код . Вот пример:

Код:
import telebot 
from telebot import types 
 
bot = telebot.TeleBot('')
 
@bot.message_handler(commands = ['start']) 	
def start_message(message):
    markup = types.InlineKeyboardMarkup()
    itm_button = types.InlineKeyboardButton(text='Выбирайте')
    markup.add(itm_button)
    bot.send_message(message.chat.id,'КуКу', reply_markup=markup)
 
 
bot.polling(none_stop=True)
bot.polling(interval=3)
 
while True: 
    pass
Я оставил только text там и оно перестало работать . Почему так ? И что я должен поменять чтоб я мог отправить только текст без ссылки.

Последний раз редактировалось Егор2223; 09.03.2021 в 23:16.
Егор2223 вне форума Ответить с цитированием
Старый 10.03.2021, 01:37   #4
Егор2223
 
Регистрация: 18.02.2021
Сообщений: 7
По умолчанию Помогите пожалуйста

Пишу код для тг бота уже +- как-то сделал кнопки . Пытаюсь настроить результат после нажатия на них
но возникают проблемы

Код:
import telebot 
from telebot import types 
 
bot = telebot.TeleBot('')
 
@bot.message_handler(commands = ['start']) 	
def start_message(message):
    markup = types.InlineKeyboardMarkup()
    itm_button = types.InlineKeyboardButton(text ='Биткоин',callback_data ='b')
    itd_button = types.InlineKeyboardButton(text ='Эфириум',callback_data ='c')
    itc_button = types.InlineKeyboardButton(text ='Tether',callback_data ='d')
    ita_button = types.InlineKeyboardButton(text ='Cardano',callback_data ='a')
    itn_button = types.InlineKeyboardButton(text ='Binance Coin',callback_data ='n')
    ito_button = types.InlineKeyboardButton(text ='Polkadot',callback_data ='l')
 
 
    markup.add(itm_button,itd_button,itc_button,ita_button,itn_button,ito_button)
    bot.send_message(message.chat.id,'Здраствуйте!\nКакая криптовалюта вас интересуе?', reply_markup=markup)
 
@bot.callback_query_handler(func = lambda call: True)
def answer(call):
    if call.data == 'b':
       bot.send_message(message.chat.id,text='48.000$')
    if call.data == 'c':
       bot.send_message(message.chat.id,'1.500$')
    if call.data == 'd':
       bot.send_message(message.chat.id,'1$')
    if call.data == 'a':
       bot.send_message(message.chat.id,'1$')
    if call.data == 'n':
       bot.send_message(message.chat.id,'227$')
    if call.data == 'l':
       bot.send_message(message.chat.id,'34$')
 
 
 
bot.polling(none_stop=True)
# Interval setup. Sleep 3 secs between request new message.
bot.polling(interval=3)
 
while True: # Don't let the main Thread end.
    pass
Вылазит такая ошибка
Код:
Traceback (most recent call last):
  File "C:\python\bro.py", line 37, in <module>
    bot.polling(none_stop=True)
  File "C:\Users\Egor\AppData\Local\Programs\Python\Python39\lib\site-packages\telebot\__init__.py", line 485, in polling
    self.__threaded_polling(none_stop, interval, timeout, long_polling_timeout)
  File "C:\Users\Egor\AppData\Local\Programs\Python\Python39\lib\site-packages\telebot\__init__.py", line 544, in __threaded_polling
    raise e
  File "C:\Users\Egor\AppData\Local\Programs\Python\Python39\lib\site-packages\telebot\__init__.py", line 507, in __threaded_polling
    self.worker_pool.raise_exceptions()
  File "C:\Users\Egor\AppData\Local\Programs\Python\Python39\lib\site-packages\telebot\util.py", line 117, in raise_exceptions
    raise self.exception_info
  File "C:\Users\Egor\AppData\Local\Programs\Python\Python39\lib\site-packages\telebot\util.py", line 69, in run
    task(*args, **kwargs)
  File "C:\python\bro.py", line 23, in answer
    bot.send_message(message.chat.id,text='48.000$')
NameError: name 'message' is not defined
Когда я пытаюсь в функцию answer добавить messag == def answer(call,message) то выдаёт такое

Код:
Traceback (most recent call last):
  File "C:\python\bro.py", line 37, in <module>
    bot.polling(none_stop=True)
  File "C:\Users\Egor\AppData\Local\Programs\Python\Python39\lib\site-packages\telebot\__init__.py", line 485, in polling
    self.__threaded_polling(none_stop, interval, timeout, long_polling_timeout)
  File "C:\Users\Egor\AppData\Local\Programs\Python\Python39\lib\site-packages\telebot\__init__.py", line 544, in __threaded_polling
    raise e
  File "C:\Users\Egor\AppData\Local\Programs\Python\Python39\lib\site-packages\telebot\__init__.py", line 507, in __threaded_polling
    self.worker_pool.raise_exceptions()
  File "C:\Users\Egor\AppData\Local\Programs\Python\Python39\lib\site-packages\telebot\util.py", line 117, in raise_exceptions
    raise self.exception_info
  File "C:\Users\Egor\AppData\Local\Programs\Python\Python39\lib\site-packages\telebot\util.py", line 69, in run
    task(*args, **kwargs)
TypeError: answer() missing 1 required positional argument: 'message'
Из догадок почему так только то ,что возможно значение аргумента в верхней функции как-то конфликтует с ним ,но я же не могу указать другой аргумент .

Последний раз редактировалось BDA; 10.03.2021 в 01:55.
Егор2223 вне форума Ответить с цитированием
Старый 10.03.2021, 01:58   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

1) Не нужно создавать 3 темы об одной и той же программе.
2) Не нужно использовать сторонние сайты для публикации кода (в данном случае). Допустим, pastebin закроется, и никто уже не узнает, в чем заключался вопрос.
3) Не нужно светить токен бота.
4) По сути вопроса. Просто напишите:
Код:
bot.send_message(call.message.chat.id, text = '48.000$')
Или
Код:
bot.send_message(call.from_user.id, text = '48.000$')
Какой из них правильнее, не знаю. В личном чате оба срабатывают.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 10.03.2021 в 02:14.
BDA на форуме Ответить с цитированием
Старый 27.05.2022, 14:07   #6
Шарнир
Новичок
Джуниор
 
Регистрация: 27.05.2022
Сообщений: 1
По умолчанию

Доброго времени суток форумчане.Не так давно начал писать своего первого телеграм бота,и столкнулся с такими вот ошибками.По запросам в гугле мне не особо помогло,гляньте пожалуйста:
Код:
# coding=utf-8
import telebot
from telebot import types

bot = telebot.Telebot('*')

@bot.message_handler(commands=['start'])
def start(message):
    startmenu = types.ReplyKeyboardMarkup(True, True)
    startmenu.row('Поехали')
    bot.send_message(message.chat.id, 'Приветствую тебя провессор.Я бот созданный твоим учеником', reply_markup=startmenu)
@bot.message_handler(content_types=['text'])
def next1(message):
    if message.text == 'Поехали':
        send = bot.send_message(message.chat.id, 'Как твое настроение?')
        bot.register_next_step_handler(send, next2)

@bot.message_handler(content_types=['text'])
def next2(message):
    send = bot.send_message(message.chat.id, 'Рад что {name}'.format(name=message.text))
    bot.register_next_step_handler(send, next3)

@bot.message_handler(content_types=['text'])
def next3(message):
    vibor = types.ReplyKeyboardMarkup(True, False)
    vibor.row('Очень плохо')
    vibor.row('Плохо')
    vibor.row('Хорошо')
    vibor.row('Очень хорошо')
    bot.send_message(message.chat.id, 'Как я справился с заданием?', reply_markup=vibor)


bot.polling()
Далее у меня такой список ошибок
Unexpected argument:5
Unresolved attribute reference 'send_message' for class 'Telebot':11
Unexpected argument:12
Parameter 'commands' unfilled:12
Unresolved attribute reference 'send_message' for class 'Telebot':15
Unresolved attribute reference 'register_next_step_handler' for class 'Telebot':16
Unexpected argument:18
Parameter 'commands' unfilled:18
Unresolved attribute reference 'send_message' for class 'Telebot':20
Unresolved attribute reference 'register_next_step_handler' for class 'Telebot':21
Unexpected argument:23
Parameter 'commands' unfilled:23
Unresolved attribute reference 'send_message' for class 'Telebot':30
Unresolved attribute reference 'polling' for class 'Telebot':33


C:\python\python.exe "C:/pyCharm project/proff/profhi1.py"
Traceback (most recent call last):
File "C:\pyCharm project\proff\profhi1.py", line 5, in <module>
bot = telebot.Telebot('5347758739:AAGj5IE ZVgekfQoWGVg2tQwodoaMxRE49MI')
TypeError: Telebot() takes no arguments

Process finished with exit code 1

ПОМОГИТЕ ПОЖАЛУЙСТА!!!
Шарнир вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как так сделать чтобы телеграм бот мог вычислить пользователя? svntxxmx Python 1 11.01.2021 17:15
Python и телеграм бот arriah Python 0 29.09.2020 00:09
Vk bot. Бот работает неккорректно.бот отвечает всегда одним сообщением вне зависимости от комманды. 1xev3 Python 3 03.07.2019 12:33
Простой телеграмм бот DKENT PHP 0 06.09.2018 14:37
Отправка сообщения в телеграм DKENT PHP 9 04.09.2018 22:46