PDA

View Full Version : سوال: برنامه سی شارپ تلگرام



hessam94
جمعه 10 شهریور 1396, 10:08 صبح
سلام
به من یک پروژه پیشنهاد شده برای نوشتن یک برنامه که بتونه به تعداد زیاد پوش ناتیفیکیشن در تلگرام ارسال کنه. تعدادی شماره از فایل خوانده شود و ناتیفای به آنها ارسال شود یا حتی یک پیام ساده و نه ناتیفای

1- آیا اصلا امکان این کار در تلگرام وجود دارد؟؟ آیا این مترادف یک "اسپم نویسی" نیست؟؟

2- dll tlsharp بسیار ناقص و جزیی نوشته شده. مثلا حتی متد اضافه کردن به کانتکت ها رو نداره. اما نوشته شده که میتوان هر متدی را فراخوانی کرد:

"What if you can't find needed method at the list?
Don't panic. You can call any method with help of SendRequestAsync function. For example, send user typing method:"


من خودم حقیقتا زیاد کاربر تلگرام نیستم که مدام با صفحات تبلیغات و اینها سرو کار داشته باشم. یعنی اصلا وقت نمیکنم. اگر امکان فراخوانی متد ها وجود داره چطور میتوان متد Importcontact را فراخوانی کرد. حداقل با این کار من میتوانم تلگرام را دور بزنم. شماره را به کانتکت ها اضافه کنم ، پیام را ارسال کنم و بلافاصله حذفش کنم. چون ظاهرا برای ارسال حتما باید userid داشته باشیم از مخاطب، که اون هم ار لیست کانتکت ها بدست میاد.

3- ایا dll دیگری برای سی شارپ هست؟

4- میتوان از dll خود تلگرام به صورت unmanaged در سی شارپ استفاده کرد؟؟

5- من در سایت تلگرام فایل api پیدا نمیکنم. سورس کد ها هست ولی dll آماده وجود نداره!!!

مرسی

Moien Tajik
جمعه 10 شهریور 1396, 10:31 صبح
1- پیام پشت سر هم ، اضافه کردن مخاطب پشت هم و هر عملیاتی که اسپم تشخیص داده بشه توسط تلگرام اکانت شما بن میشه و به شما خطای Flood Exception میده که باید اندازه اون تایمی که داخل Exception قرار داده میشه صبر کنید تا اکانتتون از بن در بیاد . ( حداقل 24 ساعت )

2- متد ImportContact داره اما RemoveContact درست پیاده سازی نشده ، ولی شما اگر حتی 5 تا مخاطب رو پشت هم اضافه کنید ، با Flood Exception مواجه میشید .

3- خیر برای ایجاد سشن و لاگین داخل اکانت فقط TLSharp موجود هستش .

5,4 - تلگرام با پروتکل MTProto هستش و API آماده ای در #C برای استفاده به شما نمیده ، شما باید ارتباط رو از طریق TCP برقرار کنید : https://stackoverflow.com/a/32809138

کارهای ساده ای مثل ارسال پیام ، اضافه کردن مخاطب ، ... رو میشه با TLSharp براحتی انجام داد و نیازی نیست که کد بازنویسی کنید .

hessam94
جمعه 10 شهریور 1396, 11:18 صبح
پس عملا این پروژه یا فرضیه قابل پیاده سازی نیست.؟ شما از عدد دقیق Flood exception اطلاع دارید؟؟ یعنی من یه همچین برنامه ای بنویسم و به مشتری بگم هر ساعت فقط 10 تا اضافه کن!! یا مثلا مشخص هست بین هر عملیات چقدر وقفه باشه جواب میده. یعنی هر اضافه کردنی 10 دقیقه بینش فاصله باشه و برنامه ما خودکار این کار رو انجام بده.
2- برای تولید session کد سی شارپ در اختیار دارید من دارم سرچ میکنم ولی به نتیجه درستی رسیدم.
public TelegramClient(ISessionStore store, string sessionUserId, int apiId, string apiHash);
apid , hashid رو میتونم بعد از کانکت شدن بگیرم ولی تولید سشن و بازخوانی رو متوجه نمیشم. همین طور sessionUserId؟؟ همون userid فردی هست که لاگین کرده؟
اصلا من خود این دو پارامتر رو apid hashid میتونم در یک فایل قرار بدم و نیاز به سشن هم نباشه. ولی کلاینت حتما یک پارامتر از نوع سشن میخواد.
اقا مرسی

Moien Tajik
جمعه 10 شهریور 1396, 13:11 عصر
پس عملا این پروژه یا فرضیه قابل پیاده سازی نیست.؟ شما از عدد دقیق Flood exception اطلاع دارید؟؟ یعنی من یه همچین برنامه ای بنویسم و به مشتری بگم هر ساعت فقط 10 تا اضافه کن!! یا مثلا مشخص هست بین هر عملیات چقدر وقفه باشه جواب میده. یعنی هر اضافه کردنی 10 دقیقه بینش فاصله باشه و برنامه ما خودکار این کار رو انجام بده.
عدد دقیقی نداره و کاملا متغییر هستش ، بعضی عملیات ها مثل AddContact زودتر به Flood میخورن چون عملیات مهمتری هستش.
نمیشه مدیریتش کرد مگر اینکه فاصله زیادی بین عملیات ها بزارید .


2- برای تولید session کد سی شارپ در اختیار دارید من دارم سرچ میکنم ولی به نتیجه درستی رسیدم.
تو Sample های خود TLSharp تو github هست ، فایل سشن رو داخل bin میسازه میتونید override کنیدش و مسیرش رو custom کنید :

var hash = await client.SendCodeRequestAsync("<user_number>");
var code = "<code_from_telegram>"; // you can change code in debugger

var user = await client.MakeAuthAsync("<user_number>", hash, code);


اصلا من خود این دو پارامتر رو apid hashid میتونم در یک فایل قرار بدم و نیاز به سشن هم نباشه. ولی کلاینت حتما یک پارامتر از نوع سشن میخواد.
فایل سشن حتما لازم هستش و اگر نباشه شما اهراز هویت نشدید و نمیتونید داخل تلگرام لاگین بمونید !

hessam94
جمعه 10 شهریور 1396, 13:53 عصر
اها یعنی نیازی به session.save() نیست؟؟ فقط session.Load فراخوانی بشه و داخل یه متغیر سشن قرار داده بشه.
sessionUserid همون id فردی لاگین کننده هست درسته؟

Moien Tajik
جمعه 10 شهریور 1396, 16:06 عصر
شما باید چک کنید اگر سشن یکبار ساخته شده بود و Authorize شده بود دیگه از اول سشن ساخته نشه و همون قبلی رو لود کنه ; ساخت سشن جدید پشت هم جز دلایل Flood Exception هست .


sessionUserid همون id فردی لاگین کننده هست درسته؟
بنده یادم نمیاد SessionUserId جایی استفاده شده باشه ، از کجا میگید اینو ؟!

maarek
جمعه 10 شهریور 1396, 17:17 عصر
من میتونم هر مقدار کانتکت که مورد نیاز هست و ادد کنم تو مدت زمان کمتر.. البته اکانت شما ریپورت میشه اما بن نمیشه !

hessam94
جمعه 10 شهریور 1396, 18:40 عصر
ببینید چند تا پیاده سازی از TLSharp وجود داره که در نسخه اصلی متد Import وجود نداره. حداقل من که کامپایل کردم اینجور بود. نسخه ای داشتم که اصلا سشن نمیخواست همون کدی و هش کد رو اگر ذخیره میکردیم کانکت میشد ولی اون نسخه import contact نداشت!! اگر شما dll درست رو دارید لطفا بزارید.
این نسخه که TgmsgSharp هست در سازنده کلاینت اون ID رو میخواد
https://github.com/UnoSD/TgMsgSharp

2- درسته اکانت بن نمیشه اگر هر دفعه Authorize نشه و اون کد رو برای ما نفرسته . سشن تا همیشه باقی میمونه. ولی احتمال زیاد ریپورت میشه. که من این رو نمیدونم توسط کاربران یا خود تلگرام ریپورت میشه.؟؟؟؟

Moien Tajik
جمعه 10 شهریور 1396, 19:22 عصر
من میتونم هر مقدار کانتکت که مورد نیاز هست و ادد کنم تو مدت زمان کمتر.. البته اکانت شما ریپورت میشه اما بن نمیشه !
بیشتر از 450 Contact نمیتونید اضافه کنید Limit داره : https://github.com/vysheng/tg/issues/566



ببینید چند تا پیاده سازی از TLSharp وجود داره که در نسخه اصلی متد Import وجود نداره. حداقل من که کامپایل کردم اینجور بود. نسخه ای داشتم که اصلا سشن نمیخواست همون کدی و هش کد رو اگر ذخیره میکردیم کانکت میشد ولی اون نسخه import contact نداشت!! اگر شما dll درست رو دارید لطفا بزارید.
خود TLSharp پیشفرض ImportContact داره : https://github.com/sochix/TLSharp/issues/371#issuecomment-280345024


2- درسته اکانت بن نمیشه اگر هر دفعه Authorize نشه و اون کد رو برای ما نفرسته . سشن تا همیشه باقی میمونه. ولی احتمال زیاد ریپورت میشه. که من این رو نمیدونم توسط کاربران یا خود تلگرام ریپورت میشه.؟؟؟؟
عملیات های تکراری مثل ارسال پیام متوالی ، اضافه کردن Contact متوالی و ... از سمت تلگرام اسپم حساب میشه و اکانت شما بن میشه ، باید با Thread.Sleep و ثانیه های Random مدیریتش کنید .
ارور کد 420 رو ببینید : https://core.telegram.org/api/errors

maarek
شنبه 11 شهریور 1396, 13:54 عصر
بیشتر از 450 Contact نمیتونید اضافه کنید Limit داره : https://github.com/vysheng/tg/issues/566
منظورم تعداد پشت سر هم بود چون شما گفتی :

ولی شما اگر حتی 5 تا مخاطب رو پشت هم اضافه کنید ، با Flood Exception مواجه میشید .
من همین 450 تا میتونم پشت سر هم ادد کنم.. بدون استفاده از sleep و...