Бот розыгрыша по Телеграмму и твичу

Во первых, в PyTelegramBotAPI (и не только) весь функционал бота строится на декораторах. В вашем же случае вы запихнули ответ на ‘как дела’ и ‘привет’ в одну функцию, что не совсем хорошо если рассуждать со стороны эстетики языка Python, каждая функция дожна отвечать за определенный фнукционал, их можно было отделить в отдельные функции и указать в декораторе, определенные условия при которых срабатывала бы функция. То есть вот так:

Такая же проблема и с функцией digitgames:

Как видите у нас есть две фнукции с декораторами, и в обеих декортаорах указано чтобы обе функции срабатывали на тип контента text (текст). Допустим вы напишите боту «привет», то по идее бот должен ответит вам «Ну привет)», но он вам ответит «Noting else». А почему? А потому что, функция digitgames стоит первой и его декоратор срабатывает на любой текст так же как и второй декоратор фнукции send_texts, но так как digitgames стоит первой и content_types=[‘text’] сообщении является True, то соотвественно вторая фнукция уже не срабатыватает.

Как провести розыгрыш в Telegram-канале, запустить гивэвей в телеграм с помощью бота @GiveShareBot

В третих, что это такое?

bot.send_message(message.chat.id, ‘Ура! Ты угадал число! Это была цифра:’, digit) ^^^^^^^^ bot.send_message(message.chat.id, ‘Неверно, осталось попыток:’, counter) ^^^^^^^^^^

Почему digit и counter у вас через запятую отделён от основного текста сообщени? send_message — это обычная функция, и она как любая другая функция принимает определеные аргументы, это вам не print(), где можно бесконечно указывать аргументы и все они будут восприниматся как текст:

>>> print(«123», «456») 123 456

Функция send_message в целом принимает много аргументов. Самые главные из них chat_id и text, chat_id вы верно указали — message.chat.id, а вот text не совсем коректно, вот правильный пример:

Еще по теме:  Телеграмм черновик что это

bot.send_message(message.chat.id, f’Ура! Ты угадал число! Это была цифра: ‘) # C помощью f-string, можно еще с помощью format

В четвортых, разработка бота это вам не халам-балам, хорошо что вы используете PyTelegramBotAPI, есть библиотека aiogram, это настоящии ад, она асинхронная, а чтобы понять ассинхронность нужно достаточно хорошо понимать Python (aiogram — это PyTelegramBotAPI на стеройдах).

guess=int(message.text) , Cтрока ‘игра’ попадает в переменную guess, чего быть не должно. — В разработке Телеграмм бота нету фнукции input(), есть кое-что похожее, но работает она совсем по другому принципу — bot.register_next_step_handler. Посмотрите вот этот пример: https://github.com/eternnoir/pyTelegramBotAPI/blob/master/examples/step_example.py

Вот сообвственно ваш пофикшенный код:

Совет: никогда не используйте глобальные переменные в ботах, я в примере реализовал костыль в виде функции init_storage, set_data_storage и get_data_storage заместо глобальных переменных.

Источник: ru.stackoverflow.com

Бот розыгрыша по телеграмму и твичу

Вход Регистрация

Азартные игры

Активный отдых

Аудиокниги

Без категории

Бизнес и Финансы

Блоги и статьи

Города и регионы

Гороскопы, гадания

Дизайнеру

Для взрослых +18

Животные

Знакомства

Игры

Изображения

Искусство

Коллекции

Красота и здоровье

Криптовалюты

Кулинария

Лайфхаки

Литература

Магазины

Маркетинг

Мода и стиль

Мотивация

Музыка

Наука и техника

Недвижимость

Нейросети

Новости и СМИ

Обучение

Общение

Политика

Приложения и Soft

Психология

Путешествия

Работа и Вакансии

Развлечения

Рукоделие

Сервисы и Услуги

Сливы +18

Спорт

Строительство

Телеграмм

Технологии IT

Транспорт

Фильмы и Сериалы

Финансы и Инвестиции

Халява и скидки

Цитаты и Стихи

Экономика

Юмор и GIF

Юриспруденция

Источник: catalog-telegram.info

Рейтинг
( Пока оценок нет )
Загрузка ...