Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

yandex-bot-py

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

yandex-bot-py

Python Yandex messenger bot api

  • 1.0.6
  • PyPI
  • Socket score

Maintainers
1

Yandex messenger bot python

It is still under development and it has regular updates, do not forget to update it regularly

Getting started

pip install yandex-bot-py

Depends requests >= 2.32.3

Example
from yandex_bot import Client, Button, Message, User

bot = Client(os.getenv("YANDEX_BOT_KEY"))

@bot.on_message(phrase="/start")
def command_start(message):
    btn = Button(text="What is your name", phrase="/name")
    bot.send_message("Select an action", login=message.user.login, inline_keyboard=[btn])


@bot.on_message(phrase="/name")
def command_start(message):
    bot.send_message("Type your name", login=message.user.login)
    bot.register_next_step_handler(message.user.login, type_your_name)


def type_your_name(message):
    bot.send_message(f"Your name is {message.text}", login=message.user.login)


bot.run()

Message processing

To process all messages starting with a specific phrase, use decorator @bot.on_message. Specify in the parameters phrase to handle messages that begin with the specified phrase.

phrase checks the first word of the text from the user

@bot.on_message(phrase="/start")
def command_start(message):
    bot.send_message(f"Hello, {message.user.login}", login=message.user.login)

To send a message use bot.send_message. You can provide chat_id or login there.

bot.send_message("Hello, I'm bot", login=message.user.login)
bot.send_message("Hello, I'm bot", chat_id="12512571242")

inline_keyboard is used to add buttons to a chat with a user. Just create a Button class and provide text (The text on the button). You can provide phrase for fast binding to the processing function, or you can provide any callback_data to a Button and it will be returned on Message class in callback_data.

btn = Button(text="My button", phrase="/data", callback_data={"foo": "bar", "bar": "foo"})
bot.send_message("Select an action", login=message.user.login, inline_keyboard=[btn])

You can also delete_message() in chats and channels where the bot is located. Pass the message_id and the login or chat_id to the method. Return message_id deleted message

data = bot.delete_message(12356532, login="test@login.com")

Handling next step

For example, to wait for a response from a user to a question, you can use bot.register_next_step_handler(). This method will store the session with the current user. The method includes:

  1. user_login - the username of the user from whom to wait for the message;
  2. callback - the handler function
@bot.on_message(phrase="/name")
def get_user_name(message):
    bot.send_message("Type your name", login=message.user.login)
    bot.register_next_step_handler(message.user.login, type_your_name)

def type_your_name(message):
    bot.send_message(f"Your name is {message.text}", login=message.user.login)

Unhandled messages

To process messages for which no handler is specified, use the decorator @bot.unhandled_message(). By default, messages without a handler are not processed in any way

@bot.unhandled_message()
def unhandled(message: Message):
    print(message)

Send file or image

The method allows you to send files to private or group chats.

send_file() example. Returns a dictionary containing the message id and file id

data = bot.send_file("files/test.txt", login="login@login.ru")

send_image() example. Returns the message id with the sent image.

data = bot.send_image("files/test.jpg", login="login@login.ru")

Chats

create_chat()

The method allows you to create a chat or channel, add its description and icon, assign administrators, add members (for the chat) or subscribers (for the channel).

@bot.on_message(phrase="/create_chat")
def command_create_chat(message: Message):
    chat = Chat(name="Test chat 1", description="Description")
    users = [User(login="login1@login.ru"), User(login="login2@login.ru")]
    chat.set_admins(users)
    chat_id = bot.create_chat(chat=chat)

change_chat_users()

The method allows you to add and remove participants to the chat, add and remove subscribers to the channel, as well as appoint chat or channel administrators.

data = bot.change_chat_users("3424234", admins=[User(login="login2")], 
                            remove=[User(login="login")])

Keywords

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc