Из обновления импорта телеграммы, ParseModePython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Из обновления импорта телеграммы, ParseMode

Сообщение Anonymous »

Что не так с моим кодом?
Python версии 3.10.8
Вот весь код.

Код: Выделить всё

import logging
import asyncio
from telegram import Update, ParseMode
from telegram.constants import ParseMode
from telegram.ext import Application, CommandHandler, MessageHandler, ConversationHandler, CallbackQueryHandler, CallbackContext
from telegram import InlineKeyboardButton, InlineKeyboardMarkup
from telegram import ReplyKeyboardMarkup
from telegram import KeyboardButton
from telegram.ext import filters

# Вставьте сюда токен API вашего бота
TOKEN = "YOUR_BOT_TOKEN"

# ID группы тех поддержки (обратите внимание на "-100" в начале)
GROUP_ID = -100111111

# Настройка логгера
logging.basicConfig(
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO
)
logger = logging.getLogger(__name__)

# Состояния для ConversationHandler
CHOOSING, DEPOSIT_PROBLEM, WITHDRAWAL_PROBLEM = range(3)

# Текст сообщений
START_MESSAGE = "👋  Привет! Вы попали в бота тех поддержки Crypto.  🤝"
START_MESSAGE_IMAGE = "https://www.example.com/image.jpg"
WELCOME_MESSAGE = "Чем мы можем вам помочь?"
DEPOSIT_PROBLEM_MESSAGE = "Опишите Вашу проблему с депозитом, мы постараемся быстрее дать вам ответ."
WITHDRAWAL_PROBLEM_MESSAGE = "Опишите Вашу проблему с выводом, мы постараемся быстрее дать вам ответ."
CONTACT_MANAGER_MESSAGE = "Спасибо за обращение, вам ответят в течение 3 минут."
MANAGER_IN_CHAT_MESSAGE = "Менеджер в чате."
REPLY_TO_MESSAGE = "Ответить на сообщение"

# Кнопки
DEPOSIT_BUTTON = "Проблемы с депозитом"
WITHDRAWAL_BUTTON = "Проблемы с выводом"
CONTACT_MANAGER_BUTTON = "Связаться с менеджером"

# Клавиатура для начала диалога
start_keyboard = [
[InlineKeyboardButton(DEPOSIT_BUTTON, callback_data=DEPOSIT_BUTTON)],
[InlineKeyboardButton(WITHDRAWAL_BUTTON, callback_data=WITHDRAWAL_BUTTON)],
[InlineKeyboardButton(CONTACT_MANAGER_BUTTON, callback_data=CONTACT_MANAGER_BUTTON)]
]

# Клавиатура для описания проблемы
problem_keyboard = [
[InlineKeyboardButton(CONTACT_MANAGER_BUTTON, callback_data=CONTACT_MANAGER_BUTTON)]
]

# Функция для отправки сообщения в группу
async def send_to_group(update: Update, context: CallbackContext):
user_id = update.effective_user.id
user_name = update.effective_user.first_name
message_text = update.effective_message.text
reply_markup = InlineKeyboardMarkup(
[[InlineKeyboardButton(REPLY_TO_MESSAGE, callback_data=f"reply_{user_id}")]]
)
await context.bot.send_message(chat_id=GROUP_ID, text=f"Сообщение от {user_name} (ID: {user_id})\n\n{message_text}", reply_markup=reply_markup)

# Функция для начала диалога
async def start(update: Update, context: CallbackContext) -> int:
await context.bot.send_photo(
chat_id=update.effective_chat.id,
photo=START_MESSAGE_IMAGE,
caption=START_MESSAGE,
parse_mode=ParseMode.MARKDOWN
)
await context.bot.send_message(chat_id=update.effective_chat.id, text=WELCOME_MESSAGE, reply_markup=InlineKeyboardMarkup(start_keyboard))
return CHOOSING

# Функция для обработки кнопок
async def handle_button_press(update: Update, context: CallbackContext) -> int:
query = update.callback_query
await query.answer()

if query.data == DEPOSIT_BUTTON:
await query.edit_message_text(text=DEPOSIT_PROBLEM_MESSAGE, reply_markup=InlineKeyboardMarkup(problem_keyboard))
return DEPOSIT_PROBLEM
elif query.data == WITHDRAWAL_BUTTON:
await query.edit_message_text(text=WITHDRAWAL_PROBLEM_MESSAGE, reply_markup=InlineKeyboardMarkup(problem_keyboard))
return WITHDRAWAL_PROBLEM
elif query.data == CONTACT_MANAGER_BUTTON:
await query.edit_message_text(text=CONTACT_MANAGER_MESSAGE)
await send_to_group(update, context)
await context.bot.send_message(chat_id=update.effective_chat.id, text=MANAGER_IN_CHAT_MESSAGE)
return ConversationHandler.END
elif query.data.startswith("reply_"):
user_id = int(query.data.split("_")[1])
await query.edit_message_text(text=f"Менеджер в чате.  Вы можете начать переписку с пользователем {user_id}")
return ConversationHandler.END

# Функция для обработки сообщений с описанием проблемы
async def handle_problem_description(update: Update, context: CallbackContext) -> int:
user_id = update.effective_user.id
user_name = update.effective_user.first_name
message_text = update.effective_message.text
await send_to_group(update, context)
await context.bot.send_message(chat_id=update.effective_chat.id, text=f"Спасибо, {user_name}! Мы передали ваш вопрос менеджерам.")
return ConversationHandler.END

# Основная функция
async def main() -> None:
"""Start the bot."""
application = Application.builder().token(TOKEN).build()

application.add_handler(CommandHandler("start", start))

conv_handler = ConversationHandler(
entry_points=[CommandHandler('start', start)],
states={
CHOOSING: [CallbackQueryHandler(handle_button_press)],
DEPOSIT_PROBLEM: [MessageHandler(filters.Text & ~filters.Command, handle_problem_description)],
WITHDRAWAL_PROBLEM: [MessageHandler(filters.Text & ~filters.Command, handle_problem_description)],
},
fallbacks=[CommandHandler('start', start)]
)
application.add_handler(conv_handler)

await application.run_polling()

if __name__ == '__main__':
logging.basicConfig(
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO
)
asyncio.run(main())

Код: Выделить всё

from telegram import Update
from telegram.constants import ParseMode
Ничего не получается.

Подробнее здесь: https://stackoverflow.com/questions/790 ... -parsemode
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»