Vasiliy
ай, я ступил, там же None передается
Nikolay
https://github.com/Dolfik1/Funogram/blob/master/Funogram.TestBot/Program.fs
Nikolay
Как вспомню блин, как мы всем чатом апи продумывали, ужас :D
Vasiliy
Стартбот вроде асинхронная
Нашел, какой то пример на просторах гугла)
Nikolay
А, там ещё рыба писал на медиуме
Vasiliy
https://medium.com/@worldbeater/funogram-writing-telegram-bots-in-f-f27a873fa548
Nikolay
Он старый просто
Vasiliy
щит
Nikolay
Напишу ему чтоб обновил, если можно
Vasiliy
Чего и следовало ожидать: в продаже появились VR-очки Oculus Go с предзагруженной порнухой в рамках программы Porn in a Box: не надо искать источники (в официальном сторе Фейсбука для Okulus “взрослый” контент запрещен), не надо возиться с загрузкой - можно надеть очки и сразу потреблять. Такой пакет стоит, понятно, дороже, но как раз он способен подтолкнуть массовое приобретение очков; порнуха не раз за время существования интернета подталкивала прогресс ;) “The Oculus Go is the perfect porn device” — отмечают специалисты по порноконтенту. Кажется, Цукербергу может светить очередное обвинение общественности, словно мало ему уже имеющихся. Добавка титула создателя идеального порнодевайса не улучшит его имидж... хотя смотря среди кого. https://variety.com/2019/digital/news/oculus-go-porn-app-preloaded-1203130147/
Vasiliy
Напишу ему чтоб обновил, если можно
О да. ибо чуть ли не первая ссылка в гугле на этот пост
Nikolay
О да. ибо чуть ли не первая ссылка в гугле на этот пост
А ты можешь этот код подправить и скинуть правильный?)
Vasiliy
Ха, если бы я знал, как это делается)
Vasiliy
Но если соображу, то напишу
Nikolay
module Program open Funogram.Bot /// Handles all Telegram events. let update context = context.Update.UpdateId |> printfn "Received update: %i" [<EntryPoint>] let main _ = startBot { defaultConfig with Token = "bot-token" } update None |> Async.RunSynchronously 0
Nikolay
Попробуй так
Vasiliy
У меня тут вопрос в том, что есть функция update. Она принимает параметр на вход context. А в main мы вызываем эту функцию, но параметром передаем значение None?
Nikolay
Вот так функция выгядит: let startBot config updateArrived updatesArrived = ()
Nikolay
Ты в startBot передаёшь первым аргументом config, вторым функцию update, а третим None, вместо функции updatesArrived
Nikolay
updatesArrived используется, если тебе нужно пачками апдейты обрабатывать
Vasiliy
Ааа, да, все понял, теперь. startBot — это функция
Vasiliy
@Dolfik немного упарываюсь. А в теории, можно же написать бота, который в определенное время будет сам писать в чат?
Vasiliy
Шикарно) спс
Ayrat
Я вот сегодня наговнякал пяток.
Фил Ранжин
Хуя ты продуктивный
это больше, чем за пошлый месяц на другой работе
Hog
Я вот сегодня наговнякал пяток.
Напедалил фцию - съешь аскорбинку!
Hog
это больше, чем за пошлый месяц на другой работе
А как ты пошлый от непошлого отличаешь? :)
Фил Ранжин
Но вообще впечатления конечно хорошие. Работать с F# кудаприятней. Если не считать пакета. И тулинга.
Hog
Пакет можно включить в тулинг. Поэтому только он.
Hog
Всё, что вы делаете руками - плохо. А вот дети у вас хорошие. ©️
Фил Ранжин
ну ещё у меня весьма мощная претензия к F, что он не разрешает одинаковые названия в разных неймспейсах
Фил Ранжин
Дома буду - покажу. Чет он ныл на коллизии
Aleksandr
Он не разрешает модули и нэймспейсы с одинаковыми именами на одном уровне вложенности
Aleksandr
Но это не то же самое
Hog
Дома буду - покажу. Чет он ныл на коллизии
Ты наверное что-то не так открываешь. Если получается то же самое неполностью квалифицированное имя, то будет «работать» последний open.
Hog
Он не разрешает модули и нэймспейсы с одинаковыми именами на одном уровне вложенности
Потому, что модуль чем будет в итоге? Классом? И получится полное имя неймспейса и класса одинаковое... кмк
Aleksandr
Поэтому сишарп наверное тоже не разрешит
Hog
Цлр
Aleksandr
Ну в цлр вообще неймспейсов нет
Hog
Неймспейс это ж метадата. Не?
Aleksandr
Неймспейс конкатенируется с наименованием типа на этапе лексического разбора
Aleksandr
Тут скорее всего конфликт в том как интерпретировать A.B.M()
Aleksandr
Это либо класс B в неймспейсе A
Aleksandr
Либо вложенный класс B в класс A
Hog
А модули ещё добавляют
Hog
Модуль-то во что компилируется? Статический класс?
Aleksandr
В статические классы, да, но в слр их нет
Aleksandr
static = abstract sealed
Hog
Не. Что-то не так. Может же быть тип и модуль с одним и тем же именем
Aleksandr
Тип и модуль - да
Aleksandr
Неймспейс и тип или модуль , возможно, нет
Hog
https://blogs.msdn.microsoft.com/ericlippert/2010/03/09/do-not-name-a-class-the-same-as-its-namespace-part-one/
Aleksandr
Это другое немного
Aleksandr
Я говорил про одинаковый уровень вложенности
Aleksandr
namespace System { namespace A {...} class A {...} }
Hog
Ну, я понял смысл, но не понимаю откуда коллизии :)
Фил Ранжин
ну заебись, меня вымораживало назвать кучу разных модулей Types по разному
Hog
Но они же в разных неймспейсах
Hog
Открывай на 1 уровень выше и пиши A.Types, B.Types
Hog
Будет только понятнее!
Nikolay
А в F# есть билдер task?
Nikolay
Тут какой-то странный код: https://github.com/fsprojects/FSharp.Data.GraphQL/blob/dev/src/FSharp.Data.GraphQL.Samples.GiraffeServer/HttpHandlers.fs#L26 Причём, если task убрать, то нормально компилируется
Nikolay
А зачем оно?
Nikolay
вместо Async.StartAsTask, или как там
x
монады
Андрей
А зачем оно?
он с обоими сразу умеет
Андрей
в одном СЕ, но перформанс может получиться еще хуже чем с одними асинками