balemessenger / bale-bot-samples Goto Github PK
View Code? Open in Web Editor NEWBale Bot Python Examples
License: Apache License 2.0
Bale Bot Python Examples
License: Apache License 2.0
میخواستم بدونم که kwargs توی دستورات مختلف با مقداری که بهش میدیم چیکار میکنه و در اصل چرا باید متغییر های بیشتری رو از ما بگیره و با اون ها چیکار میکنه؟
اکثر مثال های زده شده را نتونستم پیاده سازی کنم. به دلیل موجود نبودن برخی کلاس ها. به عنوان مثال برای template message کلاس Button کلا موجود نیست که بخواهیم از آن استفاده کنیم؟ آیا این کلاس در SDK وجود دارد؟
به عنوان مثال برای کلاس PhotoSensitive هم به همین صورت است و پس از اجرای پروژه خطای not found می دهد.
سلام
چطور میشه با زبان
php
بات نوشت؟
سلام
من زمانی که نمونه پرداخت پول رو اجرا میکنم این پیغام خطا رو میده
ModuleNotFoundError: No module named 'balebot.models.messages.banking.money_request_type'
سایر مثال ها به درستی اجرا میشن. مشکل از کجا هست؟
لطفا یک نمونه کد ارسال فایل با زبان پایتون اینجا بزارید
با توجه به اینکه تعداد کاربران ما زیاد است مسلما تعداد پیام زیادی در لحظه ارسال می شود. بنده با یک حلقه تعداد 1000 پیام را برای بات ارسال کردم ولی حدود 100 پیام فقط ارسال می شود. بعد از آن هم تقریبا بات از کار می افتد و در صورت درخواست جدید پاسخ نمی دهد. این مسئله مربوط به این است که گویا Polling در SDK جاوااسکریپت اعمال نشده و پیام ها در صفی سمت سرور بله ذخیره نمی شوند.
سلام میخواستم بدونم تابعی هست که تعداد اعضای کانال و یا گروهی که توش عضو هست رو واسمون بفرسته؟
سلام چطور میشه ممبرگیر برای بله درست کرد!!
اگه این امکان وجود داره لطفا یک مثال بزارید
Purchase message simple conversion with bot
من در حال نوشتن باتی هستم که از تعداد افراد مختلف در زمانهای مختلف درخواست وجه میکند
در مثال شما هر دفعه که کاربر بخواهد درخواست وجه کند باید یک عکس برای درخواست وجه ارسال کند
لطفا یک مثال کامل از درخواست وجه بگذارید که در آن از
file_id
استفاده بشود
با تشکر
سلام
قصد ارسال یک متن به گروه بله را دارم که بات هم عضو آن گروه هست
برای بدست آوردن موارد زیر چگونه باید عمل کنیم؟
access_hash
peer_id
در داکیومنت ارائه شده در سایت در این خصوص موردی پیدا نکردم
با سلام و خسته نباشید
من میخوام پیامی که کاربر به ربات ارسال می کنه رو بدون از بین رفتن مسیر ارسال به کسی یا گروهی فورواد کنم
مثلا اگر از کانالی پیامی به ربات فوروارد میشه دقیقا همین پیام به مانند اینکه همین پیام رو فوروارد کرده باشن جای دیگه بفرستم
متدهای سند و ریسپاند و ریپلای هیچ کدوم این کار رو نمیکنن
چطور میشه این کار رو کرد؟
تشکر
ظاهر زیر هم قرار گرفتن دکمه ها در انتخابها با توجه به متن طولانی یا تصویر بالای آن دشوار و بسیار نا زیباست
راهی وجود دارد یا باید در فریمورک خود برنامه درست شود؟
در بعضی مواقع بعد از ارسال پیام این پیغام دریافت میشه
18:49:16 - error: TypeError: Cannot read property 'onAction' of null
at ServerConnection._serverConnection.setOnMessage [as onMessageCB] (/Users/azizkhani/Data/bot/bale/botpress-bale/node_modules/balebot/src/ir/elenoon/botplatform/layers/implementation/ApiConnection.ts:177:33)
at ServerConnection.handleReceivedMessage (/Users/azizkhani/Data/bot/bale/botpress-bale/node_modules/balebot/src/ir/elenoon/botplatform/layers/implementation/ServerConnection.ts:92:18)
at SocketConnection.socketDataHandler (/Users/azizkhani/Data/bot/bale/botpress-bale/node_modules/balebot/src/ir/elenoon/botplatform/layers/implementation/ServerConnection.ts:67:26)
at ReconnectingWebSocket._reconnectingWebSocket.onmessage (/Users/azizkhani/Data/bot/bale/botpress-bale/node_modules/balebot/src/ir/elenoon/botplatform/layers/implementation/SocketConnection.ts:51:18)
at WebSocket.ws.onmessage (/Users/azizkhani/Data/bot/bale/botpress-bale/node_modules/balebot/src/ir/elenoon/botplatform/layers/implementation/ReconnectingWebSocket.ts:120:22)
at WebSocket.onMessage (/Users/azizkhani/Data/bot/bale/botpress-bale/node_modules/ws/lib/WebSocket.js:442:14)
at WebSocket.emit (events.js:180:13)
at Receiver.ontext (/Users/azizkhani/Data/bot/bale/botpress-bale/node_modules/ws/lib/WebSocket.js:841:10)
at /Users/azizkhani/Data/bot/bale/botpress-bale/node_modules/ws/lib/Receiver.js:536:18
at Receiver.applyExtensions (/Users/azizkhani/Data/bot/bale/botpress-bale/node_modules/ws/lib/Receiver.js:371:5)
at /Users/azizkhani/Data/bot/bale/botpress-bale/node_modules/ws/lib/Receiver.js:508:14
at Receiver.flush (/Users/azizkhani/Data/bot/bale/botpress-bale/node_modules/ws/lib/Receiver.js:347:3)
at Receiver.finish (/Users/azizkhani/Data/bot/bale/botpress-bale/node_modules/ws/lib/Receiver.js:541:12)
at Receiver.expectHandler (/Users/azizkhani/Data/bot/bale/botpress-bale/node_modules/ws/lib/Receiver.js:499:31)
at Receiver.add (/Users/azizkhani/Data/bot/bale/botpress-bale/node_modules/ws/lib/Receiver.js:103:24)
at TLSSocket.realHandler (/Users/azizkhani/Data/bot/bale/botpress-bale/node_modules/ws/lib/WebSocket.js:825:20)
at TLSSocket.emit (events.js:180:13)
at addChunk (_stream_readable.js:269:12)
at readableAddChunk (_stream_readable.js:256:11)
at TLSSocket.Readable.push (_stream_readable.js:213:10)
at TLSWrap.onread (net.js:578:20)
سلام
اگر امکانش هست مثال کاملتری از نحوه صدا زدن متدها در مثال های فعلی و ارسال پارامترها به این متدها گذاشته شود.
برای نمونه در مثال زیر:
https://github.com/balemessenger/bale-bot-samples/blob/master/examples/text_conversion.py#L33
نحوه فراخوانی تابع و پارامترهای ارسالی در مثال مشخص نیست.
مخصوصا پارامتر
update
که در مثال نحوه ایجاد و ارسال این پارامتر ذکر نشده است.
سلام
لطفا توضیح دهید نام کاربری یا نام و.. کاربری که برای ربات پیام فرستاده را چگونه بدست آوریم ؟
هماکنون یک peer داریم که در ذیل آن آیدی هست
در update.users هم ظاهرا چیزی نیست
لطفا کمی مثال بزنید ، مستندات ناقص است
باتشکر
در حال حاضر پس از اجرای پروژه عملیات کانکتینگ انجام می شود و سپس بات به سرور کانکت می شود. چگونه می توان از کانکت بودن بات اطمینان حاصل کرد؟
Socket disconnect while trying to send photo/file message with empty error in [promise catch callback]
سلام
می خواستم درداخل یک حلقه تعداد زیاد پیام رو ارسال کنم.
اما بعضی از پیام ها ارسال نمی شد و خطای HIT_LIMIT می داد
که مشخص هست اجازه ارسال تعداد زیاد و پشت سر هم را نمی دهد
من در داخل حلقه for از
time.sleep(0.5)
استفاده کردم
اما زمانیکه از sleep استفاده می کنم.
دستور bot.send_message(...
اصلا اجرا نمی شود
آیا thumb هم مثل عکس اصلی باید آپلود بشه؟
اگر جواب مثبت هست چطور میشه این کار را انجام داد؟
اگر امکان داره نمونه کد ارسال عکس در پایتون را هم بگذارید.
ممنون
سلام
من مشغول ایجاد یک بات برای پیامرسان بله هستم که یکسری پیام رو تو یه کانال که توش ادمینه بفرسته
برای این منظور من کد زیر رو زدن که برای فرستادن پیام به channel_id و access_hash دارم
و نمیدونم باید از کجا بدستشون بیارم
با تشکر
@baleadmin @masoodbayati @ehsanbarkhordar
def send_message(self, title, link, description): message = TextMessage(text=title + "\n" + link + "\n" + description) peer = Peer(peer_type="Group", peer_id=self.peer_id, access_hash=self.access_hash) self.bot.send_message(message=message, peer=peer)
#
مشکلات زیادی در نسخه جاری وجود داره و عملا توسعه بات با استفاده از نود رو غیر ممکن کرده در صورتی که هیچ قصدی برای رفع اون ندارید حد اقل اعلام کنید تا خیال توسعه دهنده ها راحت بشه
ممنون
سلام و خسته نباشید
این قسمت به درستی کار می کنه
var photo = new SDK.PhotoMessage(fileId, fileAccessHash, "telegr.jpg", 10000, 'image/jpeg', 'hkkk2' , 300, 200, thumb2)
bot.send( photo, responder.peer)
اما این کد که ادامه همون هست بدون هیچ پیام خطایی متوقف میشه
var purchaseMessage = new SDK.PurchaseMessage(photo, '621986102393****', '1000000');
bot.send( purchaseMessage, responder.peer)
مشکل کجاست؟
با سلام
هنگام وارد کردن کتابخانه بله در پایتون 3 در رسپبری پای(لینوکس) همچین اروری مشاهده میشه !!
چه کنیم؟
:(
Traceback (most recent call last):
File "Exam.py", line 32, in
from balebot.handlers import *
File "/usr/local/lib/python3.4/dist-packages/balebot/handlers/init.py", line 2, in
from balebot.handlers.command_handler import CommandHandler
File "/usr/local/lib/python3.4/dist-packages/balebot/handlers/command_handler.py", line 2, in
from balebot.models.base_models.fat_seq_update import FatSeqUpdate
File "/usr/local/lib/python3.4/dist-packages/balebot/models/base_models/init.py", line 2, in
from balebot.models.base_models.bot_api_quoted_message import BotApiQuotedMessage
File "/usr/local/lib/python3.4/dist-packages/balebot/models/base_models/bot_api_quoted_message.py", line 4, in
from balebot.models.factories import message_factory
File "/usr/local/lib/python3.4/dist-packages/balebot/models/factories/message_factory.py", line 3, in
from balebot.models.messages.banking import purchase_message
File "/usr/local/lib/python3.4/dist-packages/balebot/models/messages/init.py", line 1, in
from balebot.models.messages.banking.purchase_message import PurchaseMessage
File "/usr/local/lib/python3.4/dist-packages/balebot/models/messages/banking/purchase_message.py", line 3, in
from balebot.models.factories import message_factory
ImportError: cannot import name 'message_factory'
لطفا یک مثال در رابطه با این که چگونه متوجه بشویم که پیام درخواست وجه به کاربر عضو بات رسیده است.
سلام
می خواستم بدونم چطوری میشه کوئری استرینگ ایجاد کرد؟
مثلا فرض کنیم آدرس رباتی مثل زیر باشه و کاربر با کلیک بر روی اون بیاد داخل ربات و من هم کوئری رو دریافت کنم:
http://ble.im/robotID?query=something
با تشکر
const SDK = require("balebot");
const fs=require("fs");
const BaleBot = SDK.BaleBot;
const PhotoMessage = SDK.PhotoMessage;
const User = SDK.User;
setTimeout(function(){
// چند ثانیه صبر میکنم تا ربات وصل بشه
doAction('1.jpg');
}
, 5000);
//اول باید فایل آپلود بشه
//بعد با آی دی و هشی که بر میگردونه ارسال بشه
function doAction(imagePath)
{
let bot = new BaleBot('key');
//buffer file for upload
var imageBuffer = fs.readFileSync(imagePath);
//base64 buffer for Thumb
// من خود عکس و برای تامبنیل انتخاب کردم در اصل باید یک عکس حجم پایین تر باشه
//!حجم تامبنیل محدودیت داره، با سعی و خطا به حدود 10 ک رسیدم. سر کار نرید
var thumbBuffer = new Buffer(imageBuffer).toString('base64');
bot.UploadFile(imageBuffer,"file").then(response=>{
//گیج میزنه toString() بدون
let fileId = response.fileId.toString();
let fileAccessHash = response.accessHash.toString();
var file = new PhotoMessage(fileId,fileAccessHash,imagePath,10000,"image/jpeg","Hello...",300,200,thumbBuffer);
bot.send(file, new User( ???? ,'hash'));
}).catch((err)=>{
console.log('err upload>>'+err);
});;
}
با عرض سلام و خسته نباشید
من مثال بات بله photo_voice_conversion.py را اجرا کردم
و خطای زیر رخ داد
Traceback (most recent call last):
File "C:\Users\Adel\PycharmProjects\baleh\venv\lib\site-packages\balebot\dispatcher.py", line 92, in process_update
handler.handle_update(self, update)
File "C:\Users\Adel\PycharmProjects\baleh\venv\lib\site-packages\balebot\handlers\message_handler.py", line 29, in handle_update
return self.callback(dispatcher.bot, update)
File "C:/Users/Adel/PycharmProjects/baleh/sendphoto.py", line 56, in ask_photo
failure_callback=failure)
File "C:\Users\Adel\PycharmProjects\baleh\venv\lib\site-packages\balebot\bot.py", line 171, in upload_file
buffer = get_file_buffer(file=file)
File "C:\Users\Adel\PycharmProjects\baleh\venv\lib\site-packages\balebot\utils\util_functions.py", line 14, in get_file_buffer
opened_file = open(file, file_operation_mode)
FileNotFoundError: [Errno 2] No such file or directory: '../documents/Bale'
سلام؛
آپلود فایل در پلتفرم ویندوز بدون اشکال انجام می شود اما آپلود فایل در پلتفرم لینوکس با اشکال مواجه می شود چنانکه در بستر لینوکس مقدار
crc
محاسبه شده با مقدار
crc
برگشتی از سرور بله برابری نمی کند و همچنین مقدار متغییر
error
نال می باشد
این در حالی است که
statuscode
برگشتی از سرور مقدار 200 می باشد.
برای حل این مشکل باید چه کرد؟
I get image buffer with request to url . then upload buffer and send message .
But message dose not deliver to user
request(url, (err, response, buffer) => {
this.bot.UploadFile(buffer, 'photo').then(response => {
let fileId = response.fileId;
let fileAccessHash = response.accessHash;
var photoMsg = new SDK.FileMessage(fileId, fileAccessHash, 'name.jpg', 90258, 'image/jpeg', 'caption');
console.log(photoMsg);
let receiver = new SDK.User(chat.id, chat.accessHash);
this.bot.send(photoMsg, receiver);
}).catch((err) => {
});
});
this is console
FileUploadLinkResponse {
_id: '3',
_body:
{ fileId: '-3104598624372719103',
url: 'https://fileserver-002-c002.bale.ai/145694799/-3104598624372719103',
dup: false,
userId: 145694799 },
_fileId: '-3104598624372719103',
_url: 'https://fileserver-002-c002.bale.ai/145694799/-3104598624372719103',
_dup: false,
_userId: 145694799 }
FileUploadLinkResponse {
_id: '4',
_body:
{ fileId: '-8874395842289991166',
url: 'https://fileserver-002-c002.bale.ai/145694799/-8874395842289991166',
dup: false,
userId: 145694799 },
_fileId: '-8874395842289991166',
_url: 'https://fileserver-002-c002.bale.ai/145694799/-8874395842289991166',
_dup: false,
_userId: 145694799 }
{ connection: 'close', crc32: '2793226675' }
{ connection: 'close', crc32: '841143119' }
FileMessage {
_fileId: '-3104598624372719103',
_accessHash: 145694799,
_name: 'name.jpg',
_fileSize: 90258,
_mimeType: 'image/jpeg',
_captionText: 'caption' }
با سلام
بعد از فراخوانی متد
sendMessage(...)
تا زمانی که متد
run()
از کلاس
updater
اجرا نشه پیام ارسال نمیشه
اگر
run()
فراخوان بشه پیام فرستاده میشه ولی خط های دیگه برنامه اجرا نمیشه
لطفا راهنمایی کنید.
سلام
من باتی رو نوشتم که دو روز پیش درست کار میکرد ولی مدتی که نمیتونه تو گروه پیام ارسال کنه و مدام از سمت سرور invalid access hash دریافت میکنه
من حتی از کد sample استفاده کردم
و متوجه شدم فقط پاسخ به کاربر میتونه بده و نمیتونه تو گروه پیامی ارسال کنه
فایل ای ضمیمه کردم که داخلش یک کد sample هست
test.zip
سلام وقت بخیر
ممنون از برنامه خوبتون
من قبلا رباتای تلگراممو توی گوگل اپ اسکریپت به زبون جاوا مینوشتم
برای مثال به صورت زیر وب هوکم رو تعریف میکردم:
var token="414527728:AAWbr-vu1u5erP1uTkhZva0iVh_Y";
var telegramUrl= "https://api.telegram.org/bot"+token;
var webAppUrl = "https://script.google.com/macros/s/AKfycbzPmPvk7TrRqm3Zig1NmjRg9O2IyCg2ac0Xqcq-waOzk/exec";
function setWebhook() {
var url = telegramUrl+"/setWebhook?url="+webAppUrl;
var response = UrlFetchApp.fetch(url);
Logger.log(response.getContentText());
}
و به صورت زیر از طریق اپ اسکریپت درخواستامو میفرستادم:
http://ocordova.me/blog/telegram-bot-with-apps-script
ممنون میشم یه مثال ساده از نحوه ارتباط ربات بله با اپ اسکریپت گوگل برام بزنید که بتونم رباتای تلگرامم رو به بله انقال بدم
تشکر
I have this exception and can not connect to server
[2018-05-27 21:14:43.184] [ERROR] [default] - Socket error: Error: unexpected server response (503)
[2018-05-27 21:14:53.500] [INFO] [default] - Connecting...
[2018-05-27 21:15:13.684] [ERROR] [default] - Socket error: Error: unexpected server response (503)
[2018-05-27 21:15:29.746] [INFO] [default] - Connecting...
[2018-05-27 21:15:49.989] [ERROR] [default] - Socket error: Error: unexpected server response (503)
[2018-05-27 21:16:17.870] [INFO] [default] - Connecting...
با سلام
چجوری میشه بات بله رو به محیط گرافیکی اضافه کرد که برنامه گیر نکنه تو بات؟
import sys
from PyQt4 import QtGui, QtCore
import asyncio
from balebot.filters import *
from balebot.handlers import MessageHandler
from balebot.models.messages import *
from balebot.updater import Updater
updater = Updater(token="Your Token")
bot = updater.bot
dispatcher = updater.dispatcher
def success(response, user_data):
# Check if there is any user data or not
if user_data:
user_data = user_data['kwargs']
user_peer = user_data["user_peer"]
message = user_data["message"]
print("message : " + message.text + "\nuser id : ", user_peer.peer_id)
print("success : ", response)
def failure(response, user_data):
print("user_data : ", user_data)
print("failure : ", response)
class Window(QtGui.QMainWindow):
def __init__(self):
super(Window, self).__init__()
self.setGeometry(50, 50, 500, 300)
self.setWindowTitle("PyQT tuts!")
self.setWindowIcon(QtGui.QIcon('pythonlogo.png'))
self.home()
Start = MessageHandler(DefaultFilter(), self.conversation_starter)
dispatcher.add_handler(Start)
updater.run()
def home(self):
btn = QtGui.QPushButton("Quit", self)
btn.clicked.connect(QtCore.QCoreApplication.instance().quit)
btn.resize(100,100)
btn.move(100,100)
self.show()
def conversation_starter(self,bot, update):
message = TextMessage("Welcome\nWrite your username for login:")
user_peer = update.get_effective_user()
kwargs = {"message": message, "user_peer": user_peer}
bot.send_message(message, user_peer, success_callback=success, failure_callback=failure, kwargs=kwargs)
dispatcher.register_conversation_next_step_handler(update, [MessageHandler(TextFilter(), self.ask_username)])
def ask_username(self,bot, update):
username_obj = update.get_effective_message()
username_text = username_obj.text
dispatcher.set_conversation_data(update=update, key="username", value=username_text)
message = TextMessage("*Thanks!*\nplease tell me your Password:")
user_peer = update.get_effective_user()
kwargs = {"message": message, "user_peer": user_peer}
bot.send_message(message, user_peer, success_callback=success, failure_callback=failure, kwargs=kwargs)
def run():
app = QtGui.QApplication(sys.argv)
GUI = Window()
sys.exit(app.exec_())
run()
پس از اینکه کاربر درخواست ما را جواب داد
چگونه متوجه بشویم که کاربر وجه را پرداخت کرده است
سلام
مشکل من تمام نشدن روال dispatcher حتی بعد از فراخوانی finish_conversation هستش
من اول از این خط استفاده می کنم
dispatcher.register_conversation_next_step_handler(update, [MessageHandler(TextFilter(), number_received)])
و بعد داخل تابع number_received این خط رو:
dispatcher.finish_conversation(update)
return
اما روبات به منوی اصلی نمی ره و کماکان در حالت number_received باقی میمونه
نحوه ارسال پیام مستقیم به بات چگونه است؟ فرض کنید کاربر درخواستی ندهد که در پاسخ آن پیام ارسال شود. و بخواهیم مستقیما به کاربر پیام ارسال کنیم. با استفاده از متد Send و داشتن آی دی کاربر بنده موفق به این کار نشدم.
bot.send(new SDK.TextMessage("Direct Message !!!!"), new SDK.User(1293610133, "8137053635208138155"));
با عرض سلام و خسته نباشید
لطفا یک مثال کاربردی برای دریافت وجه قراردهید
وقتی پیام به صورت photomessage میخواد ارسال بشه 'CLIENT_REQUEST_TIMEOUT' برمیگرده مشکل کجا میتونه باشه؟
نحوه ارسال فایل به چه صورت است؟ پارامترها ذکر شده اما متاسفانه در مثالی که در مستندات هست ذکر نشده پارامترها به چه صورت باید باشند و فقط نوع پارامتر ذکر شده است. بنده تمامی حالات رو تست کردم ولی موفق به ارسال فایل نشدم.
چگونه میتوان به اصل جی سان ارسالی کاربر دسترسی پیدا کرد؟
سلام
وقتی VideoMessage ارسال می کنم.
خطای زیر رو میده
"[transport] receiving : WSMessage(type=<WSMsgType.TEXT: 1>, data='{"$type":"Response","id":"1","body":{"code":500,"tag":"INTERNAL_ERROR","data":{},"retryIn":null}}', extra='')"
سلام من یک پیام را سعی کردم توی یک ترد جدا بفرستم ولی هر چند تا پیام که بفرستم تا وقتی که کاربر به رباتم پیام نده هیچ کدوم بهش نمیرسه
def sendToAll(message):
global global_bot, global_peer
mes = TextMessage(message)
print("FOR")
for peer in global_peer:
print("sending")
try:
global_bot.send_message(mes, peer, success_callback=success, failure_callback=failure)
print("sent")
except:
print("peer ERROR---------------------")
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.