kernelbot 0.0.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 ReaalRick
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,293 @@
1
+ Metadata-Version: 2.4
2
+ Name: kernelbot
3
+ Version: 0.0.2
4
+ Summary: A simple, but extensible Python implementation for the KernelGram Bot API. Telebot-compatible.
5
+ Author-email: ReaalRick <rickReaal@proton.me>
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/ReaalRick/kernelbot
8
+ Project-URL: Repository, https://github.com/ReaalRick/kernelbot
9
+ Project-URL: Issues, https://github.com/ReaalRick/kernelbot/issues
10
+ Keywords: kernelgram,bot,api,telebot
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.8
16
+ Classifier: Programming Language :: Python :: 3.9
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Requires-Python: >=3.8
21
+ Description-Content-Type: text/markdown
22
+ License-File: LICENSE
23
+ Requires-Dist: requests>=2.28.0
24
+ Dynamic: license-file
25
+
26
+ # kernelbot
27
+
28
+ Простая, но расширяемая реализация **KernelGram Bot API** на Python.
29
+
30
+ [![PyPI version](https://img.shields.io/badge/pypi-coming%20soon-lightgrey)](https://pypi.org/project/kernelbot/)
31
+ [![Python](https://img.shields.io/badge/python-3.8%2B-blue)](https://www.python.org/)
32
+ [![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)
33
+ [![KernelGram](https://img.shields.io/badge/platform-KernelGram-2ea44f)](https://kernelgram.club)
34
+
35
+ `kernelbot` — это замена [`pyTelegramBotAPI`](https://github.com/eternnoir/pyTelegramBotAPI) (telebot), адаптированная для [KernelGram](https://kernelgram.club) — мессенджера по типу телеграма но со своим сервером. Если у вас есть код под `telebot`, достаточно поменять импорт — и он заработает.
36
+
37
+ ---
38
+
39
+ ## Содержание
40
+
41
+ - [Официальная документация](#официальная-документация)
42
+ - [Установка](#установка)
43
+ - [Первый бот](#первый-бот)
44
+ - [Что нужно](#что-нужно)
45
+ - [Простой эхо-бот](#простой-эхо-бот)
46
+ - [Общая документация API](#общая-документация-api)
47
+ - [Типы](#типы)
48
+ - [Методы](#методы)
49
+ - [Обработчики сообщений](#обработчики-сообщений)
50
+ - [Обработчики callback-запросов](#обработчики-callback-запросов)
51
+ - [Отправка фото](#отправка-фото)
52
+ - [Отправка больших сообщений](#отправка-больших-сообщений)
53
+ - [Продвинутое использование](#продвинутое-использование)
54
+ - [Только IPv4](#только-ipv4)
55
+ - [Скачивание файлов](#скачивание-файлов)
56
+ - [Прокси](#прокси)
57
+ - [Ограничения KernelGram](#ограничения-kernelgram)
58
+ - [Переход с telebot](#переход-с-telebot)
59
+ - [Лицензия](#лицензия)
60
+
61
+ ---
62
+
63
+ ## Официальная документация
64
+
65
+ - FAQ по ботам KernelGram: https://kernelgram.club/bots
66
+
67
+ ---
68
+
69
+ ## Установка
70
+
71
+ Библиотека протестирована на Python 3.8+.
72
+
73
+ Установка через pip:
74
+
75
+ ```
76
+
77
+ pip install kernelbot
78
+
79
+ ```
80
+
81
+ Или из исходников:
82
+
83
+ ```
84
+
85
+ pip install git+https://github.com/ReaalRick/kernelbot.git
86
+
87
+ ```
88
+
89
+ ---
90
+
91
+ ## Первый бот
92
+
93
+ ### Что нужно
94
+
95
+ Токен, полученный у `@BotFather` внутри приложения KernelGram. Назовём его `TOKEN`.
96
+
97
+ ### Простой эхо-бот
98
+
99
+ Класс `TeleBot` инкапсулирует все вызовы API в одном классе. Он предоставляет функции вида `send_xyz` (`send_message`, `send_photo` и другие) и несколько способов слушать входящие сообщения.
100
+
101
+ Создайте файл `echo_bot.py`:
102
+
103
+ ```python
104
+ import kernelbot
105
+
106
+ bot = kernelbot.TeleBot("TOKEN", parse_mode=None)
107
+
108
+ @bot.message_handler(commands=['start', 'help'])
109
+ def send_welcome(message):
110
+ bot.reply_to(message, "Howdy, how are you doing?")
111
+
112
+ @bot.message_handler(func=lambda m: True)
113
+ def echo_all(message):
114
+ bot.reply_to(message, message.text)
115
+
116
+ bot.infinity_polling()
117
+ ```
118
+
119
+ Запуск:
120
+
121
+ ```
122
+ python echo_bot.py
123
+ ```
124
+
125
+ Проверьте: отправьте /start и любое текстовое сообщение.
126
+
127
+ ---
128
+
129
+ ### Общая документация API
130
+
131
+ Все типы описаны в kernelbot.types. Они соответствуют определениям KernelGram Bot API
132
+
133
+ У объекта Message есть атрибут content_type, одно из значений:
134
+
135
+ ```
136
+ text, audio, document, animation, photo, sticker, video,
137
+ video_note, voice, location, contact, venue, dice,
138
+ new_chat_members, left_chat_member, new_chat_title, new_chat_photo,
139
+ delete_chat_photo, group_chat_created, supergroup_chat_created,
140
+ channel_chat_created, migrate_to_chat_id, migrate_from_chat_id,
141
+ pinned_message, invoice, successful_payment, connected_website,
142
+ poll, passport_data, proximity_alert_triggered, video_chat_scheduled,
143
+ video_chat_started, video_chat_ended, video_chat_participants_invited,
144
+ web_app_data, message_auto_delete_timer_changed, forum_topic_created,
145
+ forum_topic_closed, forum_topic_reopened, forum_topic_edited,
146
+ general_forum_topic_hidden, general_forum_topic_unhidden,
147
+ write_access_allowed, user_shared, chat_shared, story.
148
+ ```
149
+
150
+ У типа Message также есть from_user — KernelGram Bot API возвращает отправителя в поле from, но from — зарезервированное слово в Python, поэтому оно переименовано.
151
+
152
+ Методы
153
+
154
+ Все методы API находятся в классе TeleBot. Имена следуют обычным соглашениям Python:
155
+
156
+ KernelGram API метод kernelbot
157
+ getMe get_me()
158
+ sendMessage send_message()
159
+ sendPhoto send_photo()
160
+ editMessageText edit_message_text()
161
+ editMessageCaption edit_message_caption()
162
+ deleteMessage delete_message()
163
+ answerCallbackQuery answer_callback_query()
164
+ getUpdates get_updates()
165
+ getFile get_file()
166
+
167
+ Обработчики сообщений
168
+
169
+ Обработчик сообщений — это функция, декорированная message_handler экземпляра TeleBot:
170
+
171
+ ```python
172
+ @bot.message_handler(commands=['start'])
173
+ def handle_start(message):
174
+ pass
175
+ ```
176
+
177
+ Поддерживаемые фильтры:
178
+
179
+ Имя Аргументы Условие
180
+ content_types список строк (по умолчанию ['text']) True, если message.content_type в списке
181
+ regexp строка регулярного выражения True, если re.search совпадает с message.text
182
+ commands список строк True, если message.text начинается с одной из команд
183
+ chat_types список типов чатов True, если message.chat.type в списке
184
+ func lambda или ссылка на функцию True, если вызываемый объект возвращает True
185
+
186
+ Все обработчики проверяются в порядке объявления.
187
+
188
+ Обработчики callback-запросов
189
+
190
+ Инлайн-кнопки передаются через reply_markup с полем inline_keyboard:
191
+
192
+ ```python
193
+ @bot.message_handler(commands=["start"])
194
+ def start(message):
195
+ markup = {
196
+ "inline_keyboard": [
197
+ [{"text": "Say hi", "callback_data": "hi"}],
198
+ ],
199
+ }
200
+ bot.send_message(message.chat.id, "Choose:", reply_markup=markup)
201
+
202
+
203
+ @bot.callback_query_handler(func=lambda call: call.data == "hi")
204
+ def on_hi(call):
205
+ bot.answer_callback_query(call.id, text="Hello!")
206
+ bot.send_message(call.message.chat.id, "Hi there!")
207
+ ```
208
+
209
+ Отправка фото
210
+
211
+ ```python
212
+ with open("photo.jpg", "rb") as f:
213
+ bot.send_photo(chat_id, f, caption="<b>Look</b>", reply_markup=markup)
214
+ ```
215
+
216
+ Отправка больших сообщений
217
+
218
+ ```python
219
+ from kernelbot import util
220
+
221
+ large_text = open("large_text.txt", "rb").read()
222
+ for text in util.smart_split(large_text, chars_per_string=3000):
223
+ bot.send_message(chat_id, text)
224
+ ```
225
+
226
+ ---
227
+
228
+ Продвинутое использование
229
+
230
+ Только IPv4
231
+
232
+ API KernelGram обслуживается через Cloudflare, который отдаёт и IPv4-, и IPv6-адреса. В некоторых мобильных сетях IPv6 до Cloudflare не доходит, что вызывает ClientConnectorDNSError или No route to host.
233
+
234
+ kernelbot по умолчанию форсит IPv4. Чтобы отключить:
235
+
236
+ ```python
237
+ from kernelbot import apihelper
238
+ apihelper.FORCE_IPV4 = False
239
+ ```
240
+
241
+ Скачивание файлов
242
+
243
+ ```python
244
+ import requests
245
+ from kernelbot import apihelper
246
+
247
+ file_info = bot.get_file(file_id)
248
+ url = apihelper.FILE_URL.format(bot.token, file_info.file_path)
249
+ content = requests.get(url).content
250
+ ```
251
+
252
+ Прокси
253
+
254
+ ```python
255
+ from kernelbot import apihelper
256
+ apihelper.proxy = {"https": "socks5://user:pass@host:port"}
257
+ ```
258
+
259
+ Требует pip install requests[socks] для SOCKS-прокси.
260
+
261
+ ---
262
+
263
+ Ограничения KernelGram
264
+
265
+ Некоторые методы и возможности Telegram Bot API в KernelGram не реализованы или работают иначе:
266
+
267
+ · setMyProfilePhoto — отсутствует (METHOD_NOT_FOUND). Аватар бота устанавливается через @BotFather.
268
+ · Reply-клавиатуры (reply_markup.keyboard) принимаются API, но не отображаются в клиенте. Используйте инлайн-клавиатуры (reply_markup.inline_keyboard).
269
+ · Все методы set* для профиля бота (имя, описание, команды) доступны только через @BotFather.
270
+
271
+ ---
272
+
273
+ Переход с telebot
274
+
275
+ kernelbot повторяет публичный API pyTelegramBotAPI. Для перехода достаточно двух строк:
276
+
277
+ ```python
278
+ # Было
279
+ import telebot
280
+ bot = telebot.TeleBot(TOKEN)
281
+
282
+ # Стало
283
+ import kernelbot
284
+ bot = kernelbot.TeleBot(TOKEN)
285
+ ```
286
+
287
+ Всё остальное — обработчики, фильтры, reply_to, send_message, infinity_polling — работает так же.
288
+
289
+ ---
290
+
291
+ Лицензия
292
+
293
+ MIT. См. LICENSE.
@@ -0,0 +1,268 @@
1
+ # kernelbot
2
+
3
+ Простая, но расширяемая реализация **KernelGram Bot API** на Python.
4
+
5
+ [![PyPI version](https://img.shields.io/badge/pypi-coming%20soon-lightgrey)](https://pypi.org/project/kernelbot/)
6
+ [![Python](https://img.shields.io/badge/python-3.8%2B-blue)](https://www.python.org/)
7
+ [![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)
8
+ [![KernelGram](https://img.shields.io/badge/platform-KernelGram-2ea44f)](https://kernelgram.club)
9
+
10
+ `kernelbot` — это замена [`pyTelegramBotAPI`](https://github.com/eternnoir/pyTelegramBotAPI) (telebot), адаптированная для [KernelGram](https://kernelgram.club) — мессенджера по типу телеграма но со своим сервером. Если у вас есть код под `telebot`, достаточно поменять импорт — и он заработает.
11
+
12
+ ---
13
+
14
+ ## Содержание
15
+
16
+ - [Официальная документация](#официальная-документация)
17
+ - [Установка](#установка)
18
+ - [Первый бот](#первый-бот)
19
+ - [Что нужно](#что-нужно)
20
+ - [Простой эхо-бот](#простой-эхо-бот)
21
+ - [Общая документация API](#общая-документация-api)
22
+ - [Типы](#типы)
23
+ - [Методы](#методы)
24
+ - [Обработчики сообщений](#обработчики-сообщений)
25
+ - [Обработчики callback-запросов](#обработчики-callback-запросов)
26
+ - [Отправка фото](#отправка-фото)
27
+ - [Отправка больших сообщений](#отправка-больших-сообщений)
28
+ - [Продвинутое использование](#продвинутое-использование)
29
+ - [Только IPv4](#только-ipv4)
30
+ - [Скачивание файлов](#скачивание-файлов)
31
+ - [Прокси](#прокси)
32
+ - [Ограничения KernelGram](#ограничения-kernelgram)
33
+ - [Переход с telebot](#переход-с-telebot)
34
+ - [Лицензия](#лицензия)
35
+
36
+ ---
37
+
38
+ ## Официальная документация
39
+
40
+ - FAQ по ботам KernelGram: https://kernelgram.club/bots
41
+
42
+ ---
43
+
44
+ ## Установка
45
+
46
+ Библиотека протестирована на Python 3.8+.
47
+
48
+ Установка через pip:
49
+
50
+ ```
51
+
52
+ pip install kernelbot
53
+
54
+ ```
55
+
56
+ Или из исходников:
57
+
58
+ ```
59
+
60
+ pip install git+https://github.com/ReaalRick/kernelbot.git
61
+
62
+ ```
63
+
64
+ ---
65
+
66
+ ## Первый бот
67
+
68
+ ### Что нужно
69
+
70
+ Токен, полученный у `@BotFather` внутри приложения KernelGram. Назовём его `TOKEN`.
71
+
72
+ ### Простой эхо-бот
73
+
74
+ Класс `TeleBot` инкапсулирует все вызовы API в одном классе. Он предоставляет функции вида `send_xyz` (`send_message`, `send_photo` и другие) и несколько способов слушать входящие сообщения.
75
+
76
+ Создайте файл `echo_bot.py`:
77
+
78
+ ```python
79
+ import kernelbot
80
+
81
+ bot = kernelbot.TeleBot("TOKEN", parse_mode=None)
82
+
83
+ @bot.message_handler(commands=['start', 'help'])
84
+ def send_welcome(message):
85
+ bot.reply_to(message, "Howdy, how are you doing?")
86
+
87
+ @bot.message_handler(func=lambda m: True)
88
+ def echo_all(message):
89
+ bot.reply_to(message, message.text)
90
+
91
+ bot.infinity_polling()
92
+ ```
93
+
94
+ Запуск:
95
+
96
+ ```
97
+ python echo_bot.py
98
+ ```
99
+
100
+ Проверьте: отправьте /start и любое текстовое сообщение.
101
+
102
+ ---
103
+
104
+ ### Общая документация API
105
+
106
+ Все типы описаны в kernelbot.types. Они соответствуют определениям KernelGram Bot API
107
+
108
+ У объекта Message есть атрибут content_type, одно из значений:
109
+
110
+ ```
111
+ text, audio, document, animation, photo, sticker, video,
112
+ video_note, voice, location, contact, venue, dice,
113
+ new_chat_members, left_chat_member, new_chat_title, new_chat_photo,
114
+ delete_chat_photo, group_chat_created, supergroup_chat_created,
115
+ channel_chat_created, migrate_to_chat_id, migrate_from_chat_id,
116
+ pinned_message, invoice, successful_payment, connected_website,
117
+ poll, passport_data, proximity_alert_triggered, video_chat_scheduled,
118
+ video_chat_started, video_chat_ended, video_chat_participants_invited,
119
+ web_app_data, message_auto_delete_timer_changed, forum_topic_created,
120
+ forum_topic_closed, forum_topic_reopened, forum_topic_edited,
121
+ general_forum_topic_hidden, general_forum_topic_unhidden,
122
+ write_access_allowed, user_shared, chat_shared, story.
123
+ ```
124
+
125
+ У типа Message также есть from_user — KernelGram Bot API возвращает отправителя в поле from, но from — зарезервированное слово в Python, поэтому оно переименовано.
126
+
127
+ Методы
128
+
129
+ Все методы API находятся в классе TeleBot. Имена следуют обычным соглашениям Python:
130
+
131
+ KernelGram API метод kernelbot
132
+ getMe get_me()
133
+ sendMessage send_message()
134
+ sendPhoto send_photo()
135
+ editMessageText edit_message_text()
136
+ editMessageCaption edit_message_caption()
137
+ deleteMessage delete_message()
138
+ answerCallbackQuery answer_callback_query()
139
+ getUpdates get_updates()
140
+ getFile get_file()
141
+
142
+ Обработчики сообщений
143
+
144
+ Обработчик сообщений — это функция, декорированная message_handler экземпляра TeleBot:
145
+
146
+ ```python
147
+ @bot.message_handler(commands=['start'])
148
+ def handle_start(message):
149
+ pass
150
+ ```
151
+
152
+ Поддерживаемые фильтры:
153
+
154
+ Имя Аргументы Условие
155
+ content_types список строк (по умолчанию ['text']) True, если message.content_type в списке
156
+ regexp строка регулярного выражения True, если re.search совпадает с message.text
157
+ commands список строк True, если message.text начинается с одной из команд
158
+ chat_types список типов чатов True, если message.chat.type в списке
159
+ func lambda или ссылка на функцию True, если вызываемый объект возвращает True
160
+
161
+ Все обработчики проверяются в порядке объявления.
162
+
163
+ Обработчики callback-запросов
164
+
165
+ Инлайн-кнопки передаются через reply_markup с полем inline_keyboard:
166
+
167
+ ```python
168
+ @bot.message_handler(commands=["start"])
169
+ def start(message):
170
+ markup = {
171
+ "inline_keyboard": [
172
+ [{"text": "Say hi", "callback_data": "hi"}],
173
+ ],
174
+ }
175
+ bot.send_message(message.chat.id, "Choose:", reply_markup=markup)
176
+
177
+
178
+ @bot.callback_query_handler(func=lambda call: call.data == "hi")
179
+ def on_hi(call):
180
+ bot.answer_callback_query(call.id, text="Hello!")
181
+ bot.send_message(call.message.chat.id, "Hi there!")
182
+ ```
183
+
184
+ Отправка фото
185
+
186
+ ```python
187
+ with open("photo.jpg", "rb") as f:
188
+ bot.send_photo(chat_id, f, caption="<b>Look</b>", reply_markup=markup)
189
+ ```
190
+
191
+ Отправка больших сообщений
192
+
193
+ ```python
194
+ from kernelbot import util
195
+
196
+ large_text = open("large_text.txt", "rb").read()
197
+ for text in util.smart_split(large_text, chars_per_string=3000):
198
+ bot.send_message(chat_id, text)
199
+ ```
200
+
201
+ ---
202
+
203
+ Продвинутое использование
204
+
205
+ Только IPv4
206
+
207
+ API KernelGram обслуживается через Cloudflare, который отдаёт и IPv4-, и IPv6-адреса. В некоторых мобильных сетях IPv6 до Cloudflare не доходит, что вызывает ClientConnectorDNSError или No route to host.
208
+
209
+ kernelbot по умолчанию форсит IPv4. Чтобы отключить:
210
+
211
+ ```python
212
+ from kernelbot import apihelper
213
+ apihelper.FORCE_IPV4 = False
214
+ ```
215
+
216
+ Скачивание файлов
217
+
218
+ ```python
219
+ import requests
220
+ from kernelbot import apihelper
221
+
222
+ file_info = bot.get_file(file_id)
223
+ url = apihelper.FILE_URL.format(bot.token, file_info.file_path)
224
+ content = requests.get(url).content
225
+ ```
226
+
227
+ Прокси
228
+
229
+ ```python
230
+ from kernelbot import apihelper
231
+ apihelper.proxy = {"https": "socks5://user:pass@host:port"}
232
+ ```
233
+
234
+ Требует pip install requests[socks] для SOCKS-прокси.
235
+
236
+ ---
237
+
238
+ Ограничения KernelGram
239
+
240
+ Некоторые методы и возможности Telegram Bot API в KernelGram не реализованы или работают иначе:
241
+
242
+ · setMyProfilePhoto — отсутствует (METHOD_NOT_FOUND). Аватар бота устанавливается через @BotFather.
243
+ · Reply-клавиатуры (reply_markup.keyboard) принимаются API, но не отображаются в клиенте. Используйте инлайн-клавиатуры (reply_markup.inline_keyboard).
244
+ · Все методы set* для профиля бота (имя, описание, команды) доступны только через @BotFather.
245
+
246
+ ---
247
+
248
+ Переход с telebot
249
+
250
+ kernelbot повторяет публичный API pyTelegramBotAPI. Для перехода достаточно двух строк:
251
+
252
+ ```python
253
+ # Было
254
+ import telebot
255
+ bot = telebot.TeleBot(TOKEN)
256
+
257
+ # Стало
258
+ import kernelbot
259
+ bot = kernelbot.TeleBot(TOKEN)
260
+ ```
261
+
262
+ Всё остальное — обработчики, фильтры, reply_to, send_message, infinity_polling — работает так же.
263
+
264
+ ---
265
+
266
+ Лицензия
267
+
268
+ MIT. См. LICENSE.
@@ -0,0 +1,13 @@
1
+ """kernelbot — KernelGram Bot API library, telebot-compatible."""
2
+
3
+ import logging
4
+
5
+ from .version import __version__
6
+ from .bot import TeleBot
7
+ from . import apihelper
8
+ from . import types
9
+ from . import util
10
+
11
+ logger = logging.getLogger("kernelbot")
12
+
13
+ __all__ = ["TeleBot", "apihelper", "types", "util", "__version__"]