TGTGInsightтелеграм анализLIVE / telegram public index
← Такты, стеки, два колеса

TGINSIGHT SIMILAR POSTS

Намери подобно съдържание

Изходен канал @clockstackwheels · Post #721 · 26.12

Почему я люблю языки с сильной системой типов, проверяемой статическим анализом кода — хорошо написанная программа является своей собственной спецификацией и позволяет выражать через язык программирования законы существования предметной области. Когда-то давно я писал на ActionScript. Там была система типов, но вот десериализация JSON'ов по-умолчанию была в какой-то общий Object, к полям которого нужно было обращаться ["по_строковому_имени"]. В один момент мне потребовалось написать что-то на C#, который я совсем не знал, я стал гуглить, как десериализовать JSON, и с удивлением обнаружил кучу советов заранее объявить класс со всеми нужными полями и десериализовать в него. "Какой ужас!", — подумал я тогда, — "Это же дико неудобно! А если я не знаю полей JSON? А если их много? Отвратительный язык!" Теперь то я прекрасно понимаю, что JSON это контракт, и что правильная десериализация только такая и должна быть, и что в хорошем API в одном поле никогда не бывает данных принципиально разных типов, и так далее. Нет, если вы набиваете вечерами пет-проект или сидите бессонную ночь на хакатоне, нет ничего плохого в том, чтобы взять простой язык с динамическими типами вроде JavaScript или Python, не требующий описывать данные. Но вот в энтерпрайзе, особенно когда над одним проектом работает много людей (а бывает это очень часто) — хорошее использование системы типов убережёт разработчиков от огромного количества ошибок, будет бить их по рукам, когда они пытаются сделать что-то не то, и будет подсказывать, когда они не уверены в чём-то. С помощью статической типизации можно на уровне кода обозначить правила, по которым ведёт себя предметная область вашей программы в реальном мире. Разработчику не только будет сложно их нарушить, но он ещё и станет узнавать какие-то вещи, которые мог не знать раньше. Например, если мы делаем медицинскую CRM, и больница заводит новых пациентов только тогда, когда знает их группу крови, мы можем объявить тип "Пациент" (или, если точнее, "Карта пациента") и запретить создавать экземпляры этого типа, не передав в конструктор группу крови (которая, в свою очередь, тоже является типом, вероятнее всего ValueObject'ом). Если новый программист пришёл в проект, он, во-первых, не сможет записать в БД некорректную карту пациента. Понятно, мы не учитываем случаи, когда новый программист переделывает модели предметной области — это будет хорошо видно на кодревью. А, во-вторых, даже если ему никто не сказал, что пациенты должны быть с группой крови, он узнает это из кода. И уже будет понимать, что в тех процессах реальной жизни, которые он описывает кодом, карта пациента создаётся только при наличии группы крови. А, значит, нужно искать какой-то способ сначала эту группу крови получить, и только потом создавать карту. Программирование моделирует реальный процесс. В настоящей работе даже на языках с типами, конечно, без должного контроля можно написать что угодно. Нужна управленческая воля, компетентность руководства, понимание опасности техдолга, в идеале отдельные должности для архитекторов, опытные лиды и старшие разработчики. Но когда всё это есть, можно отсекать много проблем ещё на старте и проще погружать новичков. #dev

Hashtags

Резултати

Намерени 4 подобни публикации

Търсене: #botsbusiness

当前筛选 #botsbusiness清除筛选
JS Organization

@jsorganization · Post #399 · 17.06.2024 г., 15:09

BOT ERROR NOTTFY TO OWNER AND Sent Error Sticker To USER. Javascript Codes 🤖 COMMAND NAME :! Code - try { } catch (error) { Bot.sendMessage(error) } Api.sendSticker({sticker: "CAACAgIAAxkBAAMCZnBKHHgDzY6mDNFc2SwTXqlnMj4AAgIBAAJWnb0KTuJsgctA5P81BA" }); const chatId = 6162684693; // Replace with the actual Admin Userid // Construct the message const errorMessage = `Hey Owner, Your bot command "${message}" is facing an error. Error encountered by @${user.username}.`; // Send the message Api.sendMessage({ chat_id: chatId, text: errorMessage }); Donot Change Command Name ⚠️ #ErrorNottifyCode#Error#BotsBusiness#JSOrganization @JSOrganization🤖 Any help - @itsSowrov🙂

JS Organization

@jsorganization · Post #528 · 19.08.2024 г., 16:13

Bots.Business WebApp With Custom URL🤖 Command Name : "Your Any Command Name" Code: let webPage = "YOUR WEB URL IS HERE"; Api.sendMessage({ text: `Hello. This is An Example Web App `, disable_web_page_preview: true, reply_markup: { inline_keyboard: [[{ text: "Start Now", url: webPage }]] }, parse_mode: "Markdown" }); //replace Your Web Page URL #bb#BotsBusiness#JSOrganization#Web#WebApp Support - @itsSowrov🔸

JS Organization

@jsorganization · Post #401 · 18.06.2024 г., 08:03

Public Wishing With Show Profile Photo Post. Javascript Code🤖 Command Name : /post Code ; Api.sendPhoto({ chat_id: "@JSOrganization",// Replace To Your Channel Username photo:"https://t.me/JSOrganization" , caption: "*👋Hello! @JSOrganization*", parse_mode: "Markdown", reply_markup: {inline_keyboard : [[{text: "CLICK TO WISH ", callback_data: "/post2"}]] } }) Command Name :/post2 Code: // Get the user Telegram ID let userId = user.telegramid; // Array of random wishing captions const randomCaptions = [ "May your wishes come true! 🌟", "Sending you warm wishes on this special day! 🌸", "Wishing you happiness and prosperity!", "May your heart be filled with joy and peace.", "Here's to a wonderful Eid ul Adha celebration!" ]; // Function to get a random element from an array function getRandomElement(array) { return array[Math.floor(Math.random() * array.length)]; } // Define the new property name const newPropertyName = "hasGreeted"; // Check if the user has already greeted if (!User.getProperty(newPropertyName)) { // Increment the total wishes by 1 let totalWishes = Bot.getProperty("total_wishes", 0) + 1; Bot.setProperty("total_wishes", totalWishes, "integer"); // Set a flag to indicate that the user has greeted User.setProperty(newPropertyName, true, "boolean"); // Send the response with an alert Api.answerCallbackQuery({ callback_query_id: request.id, text: `Successfully Wished 🌟\n\nTotal Wishes: ${totalWishes}`, show_alert: true }); // Select a random wishing caption let randomCaption = getRandomElement(randomCaptions); // Prepare the enhanced caption with the updated total wishes count and random wishing caption let caption = `${user.first_name}, wishing you all a blessed Eid ul Adha! 🌸\n\n` + `Thank you for your wish! ${randomCaption}\n\n` + `Total Wishes So Far: ${totalWishes}`; // Edit the message with the updated caption and media Api.editMessageMedia({ chat_id: request.chat_id, message_id: request.message.message_id, media: { type: "photo", media: "t.me/" + user.username, caption: caption }, parse_mode: "markdown", reply_markup: { inline_keyboard: [ [{ text: "✨ Wish Now ✨", callback_data: "/post2"}] ] } }); } else { // User has already greeted, no action needed Api.answerCallbackQuery({ callback_query_id: request.id, text: "You have already greeted!", show_alert: true }); } Replace Your Greetings Random Message As Your Wish 🔴 #Greeting#Wish#EidPost#PublicWish#BotsBusiness#JSOrganization ©@JSOrganization🤖 If Anyone Face Any Error Or Problem. So Message@itsSowrov🙂

JS Organization

@jsorganization · Post #624 · 21.09.2024 г., 07:52

🤖 Bots.Business Multiple Channels Force Joined Check BJS Code👨‍💻 ❗️At First Make A /start Command Code. example- 👩‍💻 Command : /start var button = [{title: "✅ Joined", command:"/joined"}]; Bot.sendInlineKeyboard(button, "*🌟 Join Our All Channels To Use Our Bot 👇\n@PublicDiaryOfficial \n@TapSwapMiningOfficial\n@JSEarnMony\nAfter Joined Click On ✅ Joined*"); ❗️Then /joined Command Code 👩‍💻 Command : /joined var channels = ["@PublicDiaryOfficial","@JSEarnMoney","@TapSwapMiningOfficial"]; // Array of Your Multiple channels HTTP.get({ url: "https://api.jsorganization.xyz/Bot/ChannelJoinCheck.php?bot_token=" + bot.token + "&user_id=" + user.telegramid + "&chat_id=" + channels, success: "/check" }); ❗️ Then /check Command Code 👩‍💻Command - /check if (content) { const { status, is_joined } = JSON.parse(content); if (status === "false") { return Bot.sendMessage("*Please make the bot an admin on your All channels*"); } if (is_joined) { Bot.sendMessage("Thank You For Join Our Channels!"); /*Bot.runCommand("MainMenu")*/ } else { Bot.sendMessage("*⚠️ You need to join all channels To Use Our Bot.*"); } } ❗️Donot Change Any Command Name ❗️Make The bot Admin in Your Multiple Channels ❗️You Can run Your Main menu Command Using Bot.runCommand(" MainMenu") ©@JSOrganization ©@itsSowrov Contact With Us If You Face Any Problem Or errors #Multiple#MultipleChannel#MultipleJoin#MultipleChannelsCheck#MultipleCheck#BotsBusiness#JSOrganization#BJS