那里!
在办公文档中,我写的是CallbackData构建器,但这不起作用
当我传递到内联键盘按钮回调数据时,我得到错误:传递了太多的参数!当我尝试使用过滤器设置回调查询处理程序时,我得到errorValueError:无效的字段名称“action”
`
`from aiogram import Bot, Dispatcher, executor, types
from aiogram.utils.callback_data import CallbackData
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from aiogram.dispatcher import FSMContext
from aiogram.dispatcher.filters.state import State, StatesGroup
import config
bot = Bot(token=config.TOKEN)
storage = MemoryStorage()
dp = Dispatcher(bot=bot, storage=storage)
class Form(StatesGroup):
recipient_id = State()
message = State()
cb_data = CallbackData('action', 'sender_id')
@dp.message_handler(commands=['start'])
async def start_cmd(message: types.Message, state: FSMContext):
if message.get_args():
if message.chat.id == int(message.get_args()):
return await message.reply(
text=f"Упс... не думаю, що писати самому собі гарна ідея. \nРозмісти це посилання у себе в Instagram або Telegram нехай тобі пишуть інші. \n\nОсь твоє посилання: \nhttps://t.me/incognito_valentinka_bot/?start={message.chat.id}")
else:
await Form.message.set()
async with state.proxy() as data:
data['recipient_id'] = message.get_args()
return await message.answer(
text="Напиши повідомлення для людини яка розмістила це посилання. \nНапиши все, що думаєшь. \n\n 👀 Ти можешь відправити текст, фото, відео або голосове повідомлення.")
await message.answer(
text=f"Привіт! Щоб почати отримувати валентинки розмісти посилання у себе в профілі інстаграм \n\n Ось твоє посилання: 👇 \nhttps://t.me/incognito_valentinka_bot/?start={message.chat.id}")
@dp.callback_query_handler(cb_data.filter(action='reply'))
async def message_reply(query: types.CallbackQuery, callback_data: dict, state: FSMContext):
print("hello")
await Form.message.set()
async with state.proxy() as data:
data['recipient_id'] = callback_data['sender_id']
await query.answer(text="Напиши відповідь")
@dp.message_handler(state=Form.message)
async def get_message(message: types.Message, state: FSMContext):
async with state.proxy() as data:
data['message'] = message.text
await bot.send_message(
chat_id=data['recipient_id'],
text="<b>Нове повідомлення</b>",
parse_mode=types.ParseMode.HTML
)
# cb = MyCallback(action="reply", sender_id=message.chat.id)
# cb =callback_msg.new(action="reply", sender_id=message.chat.id)
inline_keyboard = types.InlineKeyboardMarkup()
inline_keyboard.row(
types.InlineKeyboardButton(
text="Відповісти",
callback_data=cb_data.new(action='reply', sender_id=message.chat.id)
)
)
await bot.send_message(
chat_id=data['recipient_id'],
text=data['message'],
reply_markup=inline_keyboard
)
await message.answer(
text='<b>Повідомлення доставлено.</b>',
parse_mode=types.ParseMode.HTML
)
async def set_my_commands():
commands = [
types.BotCommand(command='/start', description='Отримай своє посилання!')
]
await bot.set_my_commands(commands=commands)
async def on_startup(dp):
print('Starting...')
await set_my_commands()
print('Running...')
async def on_shutdown(dp):
print('Shutting down...')
print('Stopped!')
if __name__ == '__main__':
executor.start_polling(
dispatcher=dp,
skip_updates=True,
on_startup=on_startup,
on_shutdown=on_shutdown,
)`
字符串
我尝试改变aigram版本我安装了最新的Python版本之前我使用3.8升级到3.9它没有解决我的问题我尝试改变参数的名称但这是不工作
1条答案
按热度按时间biswetbf1#
字符串
Try .pack()
cb_data.new(action='reply', sender_id=message.chat.id).pack()